Vital lab_report API

The lab_report API from Vital — 2 operation(s) for lab_report.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

vital-io-lab-report-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Vital Lab Report Parser Aggregate lab_report API
  description: Submit existing lab-result PDFs to be parsed and normalized into structured biomarker results. Create lab-report parser jobs and poll for job status and parsed results.
  version: 0.4.497
  contact:
    name: Junction (Vital) Support
    url: https://docs.junction.com
servers:
- url: https://api.us.junction.com
  x-fern-server-name: Production
- url: https://api.eu.junction.com
  x-fern-server-name: ProductionEU
- url: https://api.sandbox.us.junction.com
  x-fern-server-name: Sandbox
- url: https://api.sandbox.eu.junction.com
  x-fern-server-name: SandboxEU
security:
- apiKeyAuth: []
tags:
- name: lab_report
paths:
  /lab_report/v1/parser/job:
    post:
      tags:
      - lab_report
      summary: Create Lab Report Parser Job
      description: 'Creates a parse job, uploads the file(s) to provider, persists the job row,

        and starts the ParseLabReport. Returns a generated job_id.'
      operationId: CreateLabReportParserJob
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateLabReportParserJobBody'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParsingJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-fern-sdk-group-name: lab_report
      x-fern-sdk-method-name: parser_create_job
      x-fern-availability: beta
  /lab_report/v1/parser/job/{job_id}:
    get:
      tags:
      - lab_report
      summary: Get Lab Report Parser Job
      description: "Retrieves the parse job status and stored result if completed.\n\nReturns:\n    ParseLabResultJobResponse with job status and parsed data (if complete)"
      operationId: get_lab_report_parser_job_lab_report_v1_parser_job__job_id__get
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Job Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParsingJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-fern-sdk-group-name: lab_report
      x-fern-sdk-method-name: parser_get_job
      x-fern-availability: beta
components:
  schemas:
    Interpretation:
      type: string
      enum:
      - normal
      - abnormal
      - critical
      - unknown
      title: Interpretation
      description: ℹ️ This enum is non-exhaustive.
    HTTPValidationError:
      properties:
        detail:
          title: Detail
      type: object
      title: HTTPValidationError
    LabReportResult:
      properties:
        test_name:
          type: string
          title: Test Name
        value:
          type: string
          title: Value
        sample_type:
          type: string
          enum:
          - urine
          - serum_plasma_blood
          - capillary_blood
          - stool
          - saliva
          - other
          - unknown
          title: Sample Type
          default: unknown
          description: ℹ️ This enum is non-exhaustive.
        measurement_kind:
          type: string
          enum:
          - direct
          - calculated
          - ratio
          - unknown
          title: Measurement Kind
          default: unknown
          description: ℹ️ This enum is non-exhaustive.
        type:
          anyOf:
          - $ref: '#/components/schemas/LabReportResultType'
          - type: 'null'
          description: ℹ️ This enum is non-exhaustive.
        units:
          anyOf:
          - type: string
          - type: 'null'
          title: Units
        max_reference_range:
          anyOf:
          - type: number
          - type: 'null'
          title: Max Reference Range
        min_reference_range:
          anyOf:
          - type: number
          - type: 'null'
          title: Min Reference Range
        source_panel_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Source Panel Name
        loinc_matches:
          anyOf:
          - items:
              $ref: '#/components/schemas/LoincMatch'
            type: array
          - type: 'null'
          title: Loinc Matches
        loinc_match_status:
          anyOf:
          - type: string
            enum:
            - auto_match
            - needs_review
            - no_match
          - type: 'null'
          title: Loinc Match Status
          description: ℹ️ This enum is non-exhaustive.
        interpretation:
          anyOf:
          - $ref: '#/components/schemas/Interpretation'
          - type: 'null'
          description: ℹ️ This enum is non-exhaustive.
        is_above_max_range:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Is Above Max Range
        is_below_min_range:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Is Below Min Range
      type: object
      required:
      - test_name
      - value
      title: LabReportResult
    LoincMatch:
      properties:
        loinc_code:
          type: string
          title: Loinc Code
        loinc_name:
          type: string
          title: Loinc Name
        display_name:
          type: string
          title: Display Name
          default: ''
        aliases:
          items:
            type: string
          type: array
          title: Aliases
          default: []
        confidence_score:
          type: number
          title: Confidence Score
      type: object
      required:
      - loinc_code
      - loinc_name
      - confidence_score
      title: LoincMatch
    CreateLabReportParserJobBody:
      properties:
        file:
          items:
            type: string
            format: binary
          type: array
          title: File
        user_id:
          type: string
          format: uuid
          title: User Id
        needs_human_review:
          type: boolean
          title: Needs Human Review
          default: false
      type: object
      required:
      - file
      - user_id
      title: CreateLabReportParserJobBody
    ParsedLabReportData:
      properties:
        metadata:
          $ref: '#/components/schemas/ResultMetadata'
        results:
          items:
            $ref: '#/components/schemas/LabReportResult'
          type: array
          title: Results
      type: object
      required:
      - metadata
      - results
      title: ParsedLabReportData
    ParsingJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        status:
          $ref: '#/components/schemas/ParsingJobStatus'
          description: ℹ️ This enum is non-exhaustive.
        failure_reason:
          anyOf:
          - $ref: '#/components/schemas/ParsingJobFailureReason'
          - type: 'null'
          description: ℹ️ This enum is non-exhaustive.
        data:
          anyOf:
          - $ref: '#/components/schemas/ParsedLabReportData'
          - type: 'null'
        needs_human_review:
          type: boolean
          title: Needs Human Review
        is_reviewed:
          type: boolean
          title: Is Reviewed
      type: object
      required:
      - id
      - status
      - needs_human_review
      - is_reviewed
      title: ParsingJob
      example:
        data:
          metadata:
            date_collected: '2024-12-30'
            date_reported: '2025-01-01'
            dob: '1990-01-01'
            lab_name: Acme Labs
            patient_first_name: Jane
            patient_last_name: Doe
            specimen_number: ABC123
          results:
          - interpretation: normal
            is_above_max_range: false
            is_below_min_range: false
            loinc_matches:
            - aliases: []
              confidence_score: 0.99
              display_name: Glucose
              loinc_code: 2345-7
              loinc_name: Glucose [Mass/volume] in Serum or Plasma
            max_reference_range: 99
            measurement_kind: direct
            min_reference_range: 70
            sample_type: serum_plasma_blood
            source_panel_name: CMP
            test_name: Glucose
            type: numeric
            units: mg/dL
            value: '90'
        id: 8eb0217f-4683-4a3c-adca-faf95ac65739
        is_reviewed: false
        needs_human_review: false
        status: completed
    ParsingJobStatus:
      type: string
      enum:
      - upload_pending
      - started
      - completed
      - failed
      title: ParsingJobStatus
      description: ℹ️ This enum is non-exhaustive.
    ParsingJobFailureReason:
      type: string
      enum:
      - invalid_input
      - low_quality
      - not_english
      title: ParsingJobFailureReason
      description: Machine-readable failure reasons for parsing jobs. ℹ️ This enum is non-exhaustive.
    LabReportResultType:
      type: string
      enum:
      - numeric
      - range
      - comment
      - boolean
      - duration
      - percentage
      - ratio
      title: LabReportResultType
      description: ℹ️ This enum is non-exhaustive.
    ResultMetadata:
      properties:
        patient_first_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Patient First Name
        patient_last_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Patient Last Name
        dob:
          anyOf:
          - type: string
          - type: 'null'
          title: Dob
        gender:
          type: string
          enum:
          - male
          - female
          - other
          title: Gender
          default: other
          description: ℹ️ This enum is non-exhaustive.
        lab_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Lab Name
        date_reported:
          anyOf:
          - type: string
          - type: 'null'
          title: Date Reported
        date_collected:
          anyOf:
          - type: string
          - type: 'null'
          title: Date Collected
        specimen_number:
          anyOf:
          - type: string
          - type: 'null'
          title: Specimen Number
      type: object
      title: ResultMetadata
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-vital-api-key
      description: Vital Team API Key