CharmHealth · Capability

CharmHealth FHIR API

HL7 FHIR R4 (4.0.1) REST API exposed by CharmHealth EHR conforming to the US Core 3.1.1 Implementation Guide. Supports SMART on FHIR authorization for patient-facing apps, provider-facing apps, and backend services. Resource paths follow FHIR conventions and accept standard FHIR search parameters.

Run with Naftiko CharmhealthAPI

What You Can Do

GET
Getcapabilitystatement — Get FHIR CapabilityStatement
/metadata
GET
Readpatient — Read Patient
/Patient/{id}
GET
Searchpatient — Search Patient
/Patient
GET
Searchallergyintolerance — Search AllergyIntolerance
/AllergyIntolerance
GET
Searchcondition — Search Condition
/Condition
GET
Searchencounter — Search Encounter
/Encounter
GET
Searchobservation — Search Observation
/Observation
GET
Searchmedicationrequest — Search MedicationRequest
/MedicationRequest
GET
Searchimmunization — Search Immunization
/Immunization
GET
Searchcareplan — Search CarePlan
/CarePlan
GET
Searchcareteam — Search CareTeam
/CareTeam
GET
Searchdocumentreference — Search DocumentReference
/DocumentReference
GET
Searchpractitioner — Search Practitioner
/Practitioner
GET
Searchorganization — Search Organization
/Organization
GET
Searchappointment — Search Appointment
/Appointment

MCP Tools

getcapabilitystatement

Get FHIR CapabilityStatement

read-only idempotent
readpatient

Read Patient

read-only idempotent
searchpatient

Search Patient

read-only idempotent
searchallergyintolerance

Search AllergyIntolerance

read-only idempotent
searchcondition

Search Condition

read-only idempotent
searchencounter

Search Encounter

read-only idempotent
searchobservation

Search Observation

read-only idempotent
searchmedicationrequest

Search MedicationRequest

read-only idempotent
searchimmunization

Search Immunization

read-only idempotent
searchcareplan

Search CarePlan

read-only idempotent
searchcareteam

Search CareTeam

read-only idempotent
searchdocumentreference

Search DocumentReference

read-only idempotent
searchpractitioner

Search Practitioner

read-only idempotent
searchorganization

Search Organization

read-only idempotent
searchappointment

Search Appointment

read-only idempotent

Capability Spec

charmhealth-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: CharmHealth FHIR API
  description: HL7 FHIR R4 (4.0.1) REST API exposed by CharmHealth EHR conforming to the US Core 3.1.1 Implementation Guide.
    Supports SMART on FHIR authorization for patient-facing apps, provider-facing apps, and backend services. Resource paths
    follow FHIR conventions and accept standard FHIR search parameters.
  tags:
  - Charmhealth
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: charmhealth
    baseUri: https://ehr2.charmtracker.com/api/ehr/v2/fhir
    description: CharmHealth FHIR API HTTP API.
    authentication:
      type: bearer
      token: '{{CHARMHEALTH_TOKEN}}'
    resources:
    - name: metadata
      path: /metadata
      operations:
      - name: getcapabilitystatement
        method: GET
        description: Get FHIR CapabilityStatement
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient-id
      path: /Patient/{id}
      operations:
      - name: readpatient
        method: GET
        description: Read Patient
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: patient
      path: /Patient
      operations:
      - name: searchpatient
        method: GET
        description: Search Patient
        inputParameters:
        - name: identifier
          in: query
          type: string
        - name: name
          in: query
          type: string
        - name: birthdate
          in: query
          type: string
        - name: gender
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: allergyintolerance
      path: /AllergyIntolerance
      operations:
      - name: searchallergyintolerance
        method: GET
        description: Search AllergyIntolerance
        inputParameters:
        - name: patient
          in: query
          type: string
        - name: clinical-status
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: condition
      path: /Condition
      operations:
      - name: searchcondition
        method: GET
        description: Search Condition
        inputParameters:
        - name: patient
          in: query
          type: string
        - name: category
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: encounter
      path: /Encounter
      operations:
      - name: searchencounter
        method: GET
        description: Search Encounter
        inputParameters:
        - name: patient
          in: query
          type: string
        - name: date
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: observation
      path: /Observation
      operations:
      - name: searchobservation
        method: GET
        description: Search Observation
        inputParameters:
        - name: patient
          in: query
          type: string
        - name: category
          in: query
          type: string
        - name: code
          in: query
          type: string
        - name: date
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: medicationrequest
      path: /MedicationRequest
      operations:
      - name: searchmedicationrequest
        method: GET
        description: Search MedicationRequest
        inputParameters:
        - name: patient
          in: query
          type: string
        - name: status
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: immunization
      path: /Immunization
      operations:
      - name: searchimmunization
        method: GET
        description: Search Immunization
        inputParameters:
        - name: patient
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: careplan
      path: /CarePlan
      operations:
      - name: searchcareplan
        method: GET
        description: Search CarePlan
        inputParameters:
        - name: patient
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: careteam
      path: /CareTeam
      operations:
      - name: searchcareteam
        method: GET
        description: Search CareTeam
        inputParameters:
        - name: patient
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: documentreference
      path: /DocumentReference
      operations:
      - name: searchdocumentreference
        method: GET
        description: Search DocumentReference
        inputParameters:
        - name: patient
          in: query
          type: string
        - name: type
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: practitioner
      path: /Practitioner
      operations:
      - name: searchpractitioner
        method: GET
        description: Search Practitioner
        inputParameters:
        - name: identifier
          in: query
          type: string
        - name: name
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: organization
      path: /Organization
      operations:
      - name: searchorganization
        method: GET
        description: Search Organization
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: appointment
      path: /Appointment
      operations:
      - name: searchappointment
        method: GET
        description: Search Appointment
        inputParameters:
        - name: patient
          in: query
          type: string
        - name: date
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: charmhealth-rest
    description: REST adapter for CharmHealth FHIR API.
    resources:
    - path: /metadata
      name: getcapabilitystatement
      operations:
      - method: GET
        name: getcapabilitystatement
        description: Get FHIR CapabilityStatement
        call: charmhealth.getcapabilitystatement
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient/{id}
      name: readpatient
      operations:
      - method: GET
        name: readpatient
        description: Read Patient
        call: charmhealth.readpatient
        outputParameters:
        - type: object
          mapping: $.
    - path: /Patient
      name: searchpatient
      operations:
      - method: GET
        name: searchpatient
        description: Search Patient
        call: charmhealth.searchpatient
        outputParameters:
        - type: object
          mapping: $.
    - path: /AllergyIntolerance
      name: searchallergyintolerance
      operations:
      - method: GET
        name: searchallergyintolerance
        description: Search AllergyIntolerance
        call: charmhealth.searchallergyintolerance
        outputParameters:
        - type: object
          mapping: $.
    - path: /Condition
      name: searchcondition
      operations:
      - method: GET
        name: searchcondition
        description: Search Condition
        call: charmhealth.searchcondition
        outputParameters:
        - type: object
          mapping: $.
    - path: /Encounter
      name: searchencounter
      operations:
      - method: GET
        name: searchencounter
        description: Search Encounter
        call: charmhealth.searchencounter
        outputParameters:
        - type: object
          mapping: $.
    - path: /Observation
      name: searchobservation
      operations:
      - method: GET
        name: searchobservation
        description: Search Observation
        call: charmhealth.searchobservation
        outputParameters:
        - type: object
          mapping: $.
    - path: /MedicationRequest
      name: searchmedicationrequest
      operations:
      - method: GET
        name: searchmedicationrequest
        description: Search MedicationRequest
        call: charmhealth.searchmedicationrequest
        outputParameters:
        - type: object
          mapping: $.
    - path: /Immunization
      name: searchimmunization
      operations:
      - method: GET
        name: searchimmunization
        description: Search Immunization
        call: charmhealth.searchimmunization
        outputParameters:
        - type: object
          mapping: $.
    - path: /CarePlan
      name: searchcareplan
      operations:
      - method: GET
        name: searchcareplan
        description: Search CarePlan
        call: charmhealth.searchcareplan
        outputParameters:
        - type: object
          mapping: $.
    - path: /CareTeam
      name: searchcareteam
      operations:
      - method: GET
        name: searchcareteam
        description: Search CareTeam
        call: charmhealth.searchcareteam
        outputParameters:
        - type: object
          mapping: $.
    - path: /DocumentReference
      name: searchdocumentreference
      operations:
      - method: GET
        name: searchdocumentreference
        description: Search DocumentReference
        call: charmhealth.searchdocumentreference
        outputParameters:
        - type: object
          mapping: $.
    - path: /Practitioner
      name: searchpractitioner
      operations:
      - method: GET
        name: searchpractitioner
        description: Search Practitioner
        call: charmhealth.searchpractitioner
        outputParameters:
        - type: object
          mapping: $.
    - path: /Organization
      name: searchorganization
      operations:
      - method: GET
        name: searchorganization
        description: Search Organization
        call: charmhealth.searchorganization
        outputParameters:
        - type: object
          mapping: $.
    - path: /Appointment
      name: searchappointment
      operations:
      - method: GET
        name: searchappointment
        description: Search Appointment
        call: charmhealth.searchappointment
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: charmhealth-mcp
    transport: http
    description: MCP adapter for CharmHealth FHIR API for AI agent use.
    tools:
    - name: getcapabilitystatement
      description: Get FHIR CapabilityStatement
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.getcapabilitystatement
      outputParameters:
      - type: object
        mapping: $.
    - name: readpatient
      description: Read Patient
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.readpatient
      outputParameters:
      - type: object
        mapping: $.
    - name: searchpatient
      description: Search Patient
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchpatient
      with:
        identifier: tools.identifier
        name: tools.name
        birthdate: tools.birthdate
        gender: tools.gender
      inputParameters:
      - name: identifier
        type: string
        description: identifier
      - name: name
        type: string
        description: name
      - name: birthdate
        type: string
        description: birthdate
      - name: gender
        type: string
        description: gender
      outputParameters:
      - type: object
        mapping: $.
    - name: searchallergyintolerance
      description: Search AllergyIntolerance
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchallergyintolerance
      with:
        patient: tools.patient
        clinical-status: tools.clinical-status
      inputParameters:
      - name: patient
        type: string
        description: patient
      - name: clinical-status
        type: string
        description: clinical-status
      outputParameters:
      - type: object
        mapping: $.
    - name: searchcondition
      description: Search Condition
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchcondition
      with:
        patient: tools.patient
        category: tools.category
      inputParameters:
      - name: patient
        type: string
        description: patient
      - name: category
        type: string
        description: category
      outputParameters:
      - type: object
        mapping: $.
    - name: searchencounter
      description: Search Encounter
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchencounter
      with:
        patient: tools.patient
        date: tools.date
      inputParameters:
      - name: patient
        type: string
        description: patient
      - name: date
        type: string
        description: date
      outputParameters:
      - type: object
        mapping: $.
    - name: searchobservation
      description: Search Observation
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchobservation
      with:
        patient: tools.patient
        category: tools.category
        code: tools.code
        date: tools.date
      inputParameters:
      - name: patient
        type: string
        description: patient
      - name: category
        type: string
        description: category
      - name: code
        type: string
        description: code
      - name: date
        type: string
        description: date
      outputParameters:
      - type: object
        mapping: $.
    - name: searchmedicationrequest
      description: Search MedicationRequest
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchmedicationrequest
      with:
        patient: tools.patient
        status: tools.status
      inputParameters:
      - name: patient
        type: string
        description: patient
      - name: status
        type: string
        description: status
      outputParameters:
      - type: object
        mapping: $.
    - name: searchimmunization
      description: Search Immunization
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchimmunization
      with:
        patient: tools.patient
      inputParameters:
      - name: patient
        type: string
        description: patient
      outputParameters:
      - type: object
        mapping: $.
    - name: searchcareplan
      description: Search CarePlan
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchcareplan
      with:
        patient: tools.patient
      inputParameters:
      - name: patient
        type: string
        description: patient
      outputParameters:
      - type: object
        mapping: $.
    - name: searchcareteam
      description: Search CareTeam
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchcareteam
      with:
        patient: tools.patient
      inputParameters:
      - name: patient
        type: string
        description: patient
      outputParameters:
      - type: object
        mapping: $.
    - name: searchdocumentreference
      description: Search DocumentReference
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchdocumentreference
      with:
        patient: tools.patient
        type: tools.type
      inputParameters:
      - name: patient
        type: string
        description: patient
      - name: type
        type: string
        description: type
      outputParameters:
      - type: object
        mapping: $.
    - name: searchpractitioner
      description: Search Practitioner
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchpractitioner
      with:
        identifier: tools.identifier
        name: tools.name
      inputParameters:
      - name: identifier
        type: string
        description: identifier
      - name: name
        type: string
        description: name
      outputParameters:
      - type: object
        mapping: $.
    - name: searchorganization
      description: Search Organization
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchorganization
      outputParameters:
      - type: object
        mapping: $.
    - name: searchappointment
      description: Search Appointment
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: charmhealth.searchappointment
      with:
        patient: tools.patient
        date: tools.date
      inputParameters:
      - name: patient
        type: string
        description: patient
      - name: date
        type: string
        description: date
      outputParameters:
      - type: object
        mapping: $.
binds:
- namespace: env
  keys:
    CHARMHEALTH_TOKEN: CHARMHEALTH_TOKEN