Skip to main content
Kareo and PatientPop are now Tebra. Becoming Tebra will take time and we appreciate your patience as we transition to the new brand experience.Learn More
Tebra Help Center

Get Started: Tebra SOAP APIs

Updated: 07/27/2023|Views: 48370

Tebra SOAP APIs interacts with third-party applications, giving developers the ability to build programs that access Tebra data and functionality. This technical guide is intended to help developers create integration with the Tebra application.

Tebra SOAP API FAQs

Answers to the most common Tebra SOAP APIs questions and system integration patterns.

Question Answer
Where can I review the API Terms of Use?  Review the API Terms of Use here
Where do I download the Technical Guide?
Do I need to change any settings in the Tebra client in order to use the API? Yes, a System Administrator needs to generate the customer key and set the appropriate security permissions in order to start using the Tebra SOAP API. As an added security measure, Tebra SOAP API requires the use of a customer key (in addition to login credentials) to access your data. 
Can you look at my code to see what I’m doing wrong? Due to the many different programming languages available and unfamiliarity with each engineer’s personal code, we do not provide technical support to debugging an integrator’s code.

We can only provide support with the API web service on the Tebra side.
Do you have examples of how to interface with the Tebra API using PHP, C++, etc.? There are too many different programming languages available for us to provide an example of every single language. We expect that an integrator will choose the language that best fits their design and need.

However, here’s a PHP example:

<?php
    try{
        $user = '** YOUR TEBRA USERNAME HERE **';
        $password = '** YOUR TEBRA PASSWORD HERE **';
        $customerKey = '** YOUR TEBRA CUSTOMERKEY HERE **';

        $wsdl = 'https://webservice.kareo.com/service...vices.svc?wsdl';
        $client = new SoapClient($wsdl);

        $request = array (
            'RequestHeader' => array('User' => $user, 'Password' => $password, 'CustomerKey' => $customerKey),
            'Filter' => array('FromLastModifiedDate' => '3/4/2012'),
            'Fields' => array('PatientFullName' => 'true')
        );

        $params = array('request' => $request);
        $response = $client->GetPatients($params)->GetPatientsResult;

        foreach($response->Patients->PatientData as &$value)
        {
            print($value->PatientFullName. '<br />');
        }
    } catch (Exception $err) {
        print "Error: ". $err->getMessage();
    }
?>   

Does Tebra have a mechanism for pushing new/updated data to external systems? No, Tebra does not automatically push information out to external systems.
Does Tebra support a HL7 messaging interface? No, we do not currently support HL7 messaging.
How do I get the request and response XMLs for my transaction to receive API support? There are many tools available on the internet to monitor and capture your computer’s web traffic.

One of the most popular web debugging tools is Fiddler.
If I need to query Tebra for new/updated information, what is an acceptable polling frequency? If you are polling the Tebra API, we suggest that 5 to 15 minute intervals are good settings to pull for refreshed data.

We also recommend using the last modified parameter to narrow the return data.
In what format is DOB stored? YYYY-MM-DD
What do I need to do in order to request Tebra engineering support for API related questions? Pull the request and response XMLs for the transaction you are having an error with.

Submit your inquiry through the Customer Care Center and include the request and response XMLs in the Description field.

Note: Tebra can only provide support with the API on the Tebra side.
What type of functions can I perform over the API interface? The Tebra API offers a number of different functions to interact with the Tebra system data.

These include:
  1. Retrieving data from different types of records in Tebra:
    • Appointment (single)
    • Appointments (bulk)
    • Charges
    • Encounter Details
    • Patient (single)
    • Patients (bulk)
    • Payments
    • Practices
    • Procedure Codes
    • Providers
    • Service Locations
    • Transactions
  2. Creating different types of records in Tebra:
    • Create Appointment
    • Create Patient
    • Create Encounter
    • Create Payment
  3. Updating patient records in Tebra
  4. Delete appointments
What type of integration does the Tebra API support? Tebra’s API is a SOAP-based web service.

System Integration Patterns with Tebra SOAP APIs

External ID Usage

For many of the entities we expose via our public APIs, we provide a fields name with the 'ExternalId' postfix which are optional fields that can be used by an integrator to populate with identifiers generated by their own system.  For example, a Patient has a field named 'PatientExternalId', or an InsurancePolicy has an InsuracePolicyExternalId.

For disambiguation, the same examples, a Patient also has a PatientId, and, an InsurancePolicy has an InsurancePolicyId that holds Tebra generated IDs for these entities.

The ExternalId fields can be used by integrators as a convenience to be able to query or GET data on Tebra's APIs using IDs native to the system they want to integrate with Tebra. This alleviates the need for integrators to extend their records to also maintain a Tebra ID for each entity.

Some of the GET endpoints available through our APIs will allow you to get or filter by the external ID instead of using a Tebra identifier for these entities.

Migrating Patient Data into Tebra

If you are integrating with Tebra for purposes of utilizing the Billing Module only, you do not need to do an initial load of all of your patients into Tebra. Instead, you can design your integration with Tebra to have the Patient information sent when billing is needed for a particular patient as follows:

  • Patient Creation Workflow: When a new patient is created in the external system, you can immediately call the CreatePatient method on Tebra APIs to ensure the patient is also created in Tebra.
    • If you are utilizing the External ID field, make sure to populate the ExternalID field when you create the patient.
    • If you are not utilizing the External ID field, make sure to update your own patient record with the Tebra Patient ID when you create the patient.
  • Patient Creation Workflow when Submitting a Superbill:
    • If you are utilizing the External ID field, verify if the patient has already been created in Tebra. 
      • If so, submit the Superbill/Encounter. 
      • If not, create the patient with the proper ExternalId, then submit the Superbill/Encounter.
    • If you are not utilizing the External ID field, verify if your patient record is assigned a Tebra Patient ID.
      • If so, submit the Superbill/Encounter with the Tebra Patient ID. 
      • If not, create the patient, update your own patient record with the Tebra Patient ID, then submit the Superbill/Encounter with the Tebra Patient ID.

Synchronizing/Retrieving Patient Changes Made within Tebra

Tebra does not connect to Web Hooks to send out patient demographics changes made by users within Tebra. If you anticipate users making changes to patient records from within Tebra, you more than likely want to ensure those changes are also made in the system you are integrating.

In order to retrieve changes made from within the Tebra client, you can utilize the GetPatients (plural) API method. This method allows you to specify either a FromLastModfiiedDate and/or a ToLastModifiedDate; the response from this call contains all patient records that have been updated within the scope of those dates.

In general, we recommend your system retrieves patient changes every 5 to 10 minutes to ensure records are kept up-to-date.

 


For additional questions about the Tebra API, create a case through the Customer Care Center. Customer Care can only provide support with the API on the Tebra side. Include an example of your code by pasting the request and response XMLs into the Description field of the form.


 

  • Was this article helpful?