meditech · Capability

Meditech Expanse FHIR R4 API

Meditech Expanse FHIR API enables standards-based interoperability for sharing patient data across healthcare systems. Supports TEFCA-aligned data exchange through the Traverse Exchange national network, connecting over 700 facilities across 41 US states. Built on HL7 FHIR R4 standards.

Run with Naftiko MeditechAPI

What You Can Do

GET
Getcapabilitystatement — Get FHIR Capability Statement
/metadata
GET
Searchpatients — Search patients
/Patient
GET
Getpatient — Get patient by ID
/Patient/{id}
GET
Getpatientobservations — Get patient observations (vital signs, lab results)
/Patient/{id}/Observation
GET
Getpatientconditions — Get patient conditions (problem list, diagnoses)
/Patient/{id}/Condition
GET
Getpatientmedications — Get patient medication requests
/Patient/{id}/MedicationRequest
GET
Getpatientallergies — Get patient allergies and intolerances
/Patient/{id}/AllergyIntolerance
GET
Getpatientencounters — Get patient encounters
/Patient/{id}/Encounter
GET
Getpatientdiagnosticreports — Get patient diagnostic reports
/Patient/{id}/DiagnosticReport
GET
Getpatienteverything — Get all patient data (Patient $everything)
/Patient/{id}/$everything

MCP Tools

getcapabilitystatement

Get FHIR Capability Statement

read-only idempotent
searchpatients

Search patients

read-only idempotent
getpatient

Get patient by ID

read-only idempotent
getpatientobservations

Get patient observations (vital signs, lab results)

read-only idempotent
getpatientconditions

Get patient conditions (problem list, diagnoses)

read-only idempotent
getpatientmedications

Get patient medication requests

read-only idempotent
getpatientallergies

Get patient allergies and intolerances

read-only idempotent
getpatientencounters

Get patient encounters

read-only idempotent
getpatientdiagnosticreports

Get patient diagnostic reports

read-only idempotent
getpatienteverything

Get all patient data (Patient $everything)

read-only idempotent

Capability Spec

meditech-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Meditech Expanse FHIR R4 API
  description: Meditech Expanse FHIR API enables standards-based interoperability for sharing patient data across healthcare
    systems. Supports TEFCA-aligned data exchange through the Traverse Exchange national network, connecting over 700 facilities
    across 41 US states. Built on HL7 FHIR R4 standards.
  tags:
  - Meditech
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: meditech
    baseUri: https://yourhospital.meditech.com/fhir/r4
    description: Meditech Expanse FHIR R4 API HTTP API.
    authentication:
      type: bearer
      token: '{{MEDITECH_TOKEN}}'
    resources:
    - name: metadata
      path: /metadata
      operations:
      - name: getcapabilitystatement
        method: GET
        description: Get FHIR Capability Statement
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient
      path: /Patient
      operations:
      - name: searchpatients
        method: GET
        description: Search patients
        inputParameters:
        - name: identifier
          in: query
          type: string
          description: MRN or other identifier (e.g., identifier=MR|12345)
        - name: family
          in: query
          type: string
        - name: given
          in: query
          type: string
        - name: birthdate
          in: query
          type: string
          description: FHIR date parameter (e.g., birthdate=1980-01-01)
        - name: gender
          in: query
          type: string
        - name: _count
          in: query
          type: integer
        - name: _format
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id
      path: /Patient/{id}
      operations:
      - name: getpatient
        method: GET
        description: Get patient by ID
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id-observation
      path: /Patient/{id}/Observation
      operations:
      - name: getpatientobservations
        method: GET
        description: Get patient observations (vital signs, lab results)
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: category
          in: query
          type: string
          description: Filter by category (vital-signs, laboratory, imaging, etc.)
        - name: code
          in: query
          type: string
          description: LOINC code filter
        - name: date
          in: query
          type: string
          description: Date range (e.g., date=ge2024-01-01&date=le2024-12-31)
        - name: _count
          in: query
          type: integer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id-condition
      path: /Patient/{id}/Condition
      operations:
      - name: getpatientconditions
        method: GET
        description: Get patient conditions (problem list, diagnoses)
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: clinical-status
          in: query
          type: string
        - name: category
          in: query
          type: string
          description: problem-list-item or encounter-diagnosis
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id-medicationrequest
      path: /Patient/{id}/MedicationRequest
      operations:
      - name: getpatientmedications
        method: GET
        description: Get patient medication requests
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: status
          in: query
          type: string
        - name: intent
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id-allergyintolerance
      path: /Patient/{id}/AllergyIntolerance
      operations:
      - name: getpatientallergies
        method: GET
        description: Get patient allergies and intolerances
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: clinical-status
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id-encounter
      path: /Patient/{id}/Encounter
      operations:
      - name: getpatientencounters
        method: GET
        description: Get patient encounters
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: status
          in: query
          type: string
        - name: date
          in: query
          type: string
        - name: _count
          in: query
          type: integer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id-diagnosticreport
      path: /Patient/{id}/DiagnosticReport
      operations:
      - name: getpatientdiagnosticreports
        method: GET
        description: Get patient diagnostic reports
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: category
          in: query
          type: string
          description: LAB, RAD, etc.
        - name: date
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id-everything
      path: /Patient/{id}/$everything
      operations:
      - name: getpatienteverything
        method: GET
        description: Get all patient data (Patient $everything)
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: start
          in: query
          type: string
        - name: end
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: meditech-rest
    description: REST adapter for Meditech Expanse FHIR R4 API.
    resources:
    - path: /metadata
      name: getcapabilitystatement
      operations:
      - method: GET
        name: getcapabilitystatement
        description: Get FHIR Capability Statement
        call: meditech.getcapabilitystatement
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient
      name: searchpatients
      operations:
      - method: GET
        name: searchpatients
        description: Search patients
        call: meditech.searchpatients
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}
      name: getpatient
      operations:
      - method: GET
        name: getpatient
        description: Get patient by ID
        call: meditech.getpatient
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}/Observation
      name: getpatientobservations
      operations:
      - method: GET
        name: getpatientobservations
        description: Get patient observations (vital signs, lab results)
        call: meditech.getpatientobservations
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}/Condition
      name: getpatientconditions
      operations:
      - method: GET
        name: getpatientconditions
        description: Get patient conditions (problem list, diagnoses)
        call: meditech.getpatientconditions
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}/MedicationRequest
      name: getpatientmedications
      operations:
      - method: GET
        name: getpatientmedications
        description: Get patient medication requests
        call: meditech.getpatientmedications
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}/AllergyIntolerance
      name: getpatientallergies
      operations:
      - method: GET
        name: getpatientallergies
        description: Get patient allergies and intolerances
        call: meditech.getpatientallergies
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}/Encounter
      name: getpatientencounters
      operations:
      - method: GET
        name: getpatientencounters
        description: Get patient encounters
        call: meditech.getpatientencounters
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}/DiagnosticReport
      name: getpatientdiagnosticreports
      operations:
      - method: GET
        name: getpatientdiagnosticreports
        description: Get patient diagnostic reports
        call: meditech.getpatientdiagnosticreports
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}/$everything
      name: getpatienteverything
      operations:
      - method: GET
        name: getpatienteverything
        description: Get all patient data (Patient $everything)
        call: meditech.getpatienteverything
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: meditech-mcp
    transport: http
    description: MCP adapter for Meditech Expanse FHIR R4 API for AI agent use.
    tools:
    - name: getcapabilitystatement
      description: Get FHIR Capability Statement
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getcapabilitystatement
      outputParameters:
      - type: object
        mapping: $.
    - name: searchpatients
      description: Search patients
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.searchpatients
      with:
        identifier: tools.identifier
        family: tools.family
        given: tools.given
        birthdate: tools.birthdate
        gender: tools.gender
        _count: tools._count
        _format: tools._format
      inputParameters:
      - name: identifier
        type: string
        description: MRN or other identifier (e.g., identifier=MR|12345)
      - name: family
        type: string
        description: family
      - name: given
        type: string
        description: given
      - name: birthdate
        type: string
        description: FHIR date parameter (e.g., birthdate=1980-01-01)
      - name: gender
        type: string
        description: gender
      - name: _count
        type: integer
        description: _count
      - name: _format
        type: string
        description: _format
      outputParameters:
      - type: object
        mapping: $.
    - name: getpatient
      description: Get patient by ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getpatient
      with:
        id: tools.id
      inputParameters:
      - name: id
        type: string
        description: id
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getpatientobservations
      description: Get patient observations (vital signs, lab results)
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getpatientobservations
      with:
        id: tools.id
        category: tools.category
        code: tools.code
        date: tools.date
        _count: tools._count
      inputParameters:
      - name: id
        type: string
        description: id
        required: true
      - name: category
        type: string
        description: Filter by category (vital-signs, laboratory, imaging, etc.)
      - name: code
        type: string
        description: LOINC code filter
      - name: date
        type: string
        description: Date range (e.g., date=ge2024-01-01&date=le2024-12-31)
      - name: _count
        type: integer
        description: _count
      outputParameters:
      - type: object
        mapping: $.
    - name: getpatientconditions
      description: Get patient conditions (problem list, diagnoses)
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getpatientconditions
      with:
        id: tools.id
        clinical-status: tools.clinical-status
        category: tools.category
      inputParameters:
      - name: id
        type: string
        description: id
        required: true
      - name: clinical-status
        type: string
        description: clinical-status
      - name: category
        type: string
        description: problem-list-item or encounter-diagnosis
      outputParameters:
      - type: object
        mapping: $.
    - name: getpatientmedications
      description: Get patient medication requests
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getpatientmedications
      with:
        id: tools.id
        status: tools.status
        intent: tools.intent
      inputParameters:
      - name: id
        type: string
        description: id
        required: true
      - name: status
        type: string
        description: status
      - name: intent
        type: string
        description: intent
      outputParameters:
      - type: object
        mapping: $.
    - name: getpatientallergies
      description: Get patient allergies and intolerances
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getpatientallergies
      with:
        id: tools.id
        clinical-status: tools.clinical-status
      inputParameters:
      - name: id
        type: string
        description: id
        required: true
      - name: clinical-status
        type: string
        description: clinical-status
      outputParameters:
      - type: object
        mapping: $.
    - name: getpatientencounters
      description: Get patient encounters
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getpatientencounters
      with:
        id: tools.id
        status: tools.status
        date: tools.date
        _count: tools._count
      inputParameters:
      - name: id
        type: string
        description: id
        required: true
      - name: status
        type: string
        description: status
      - name: date
        type: string
        description: date
      - name: _count
        type: integer
        description: _count
      outputParameters:
      - type: object
        mapping: $.
    - name: getpatientdiagnosticreports
      description: Get patient diagnostic reports
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getpatientdiagnosticreports
      with:
        id: tools.id
        category: tools.category
        date: tools.date
      inputParameters:
      - name: id
        type: string
        description: id
        required: true
      - name: category
        type: string
        description: LAB, RAD, etc.
      - name: date
        type: string
        description: date
      outputParameters:
      - type: object
        mapping: $.
    - name: getpatienteverything
      description: Get all patient data (Patient $everything)
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: meditech.getpatienteverything
      with:
        id: tools.id
        start: tools.start
        end: tools.end
      inputParameters:
      - name: id
        type: string
        description: id
        required: true
      - name: start
        type: string
        description: start
      - name: end
        type: string
        description: end
      outputParameters:
      - type: object
        mapping: $.
binds:
- namespace: env
  keys:
    MEDITECH_TOKEN: MEDITECH_TOKEN