Lookup One or More Providers

First, return information from a single Provider, then return information from multiple Providers from our Provider Lookup endpoint using Type 1 NPIs.

Importing libraries

import requests
import pandas as pd
import json

Getting an access token

Create a function to call Auth0 to get your access token using your client ID and client Secret for your application. Remember that access tokens are only valid for an hour.

def get_access_token() -> str:
    my_client_id = '<replace with your client_id>'
    my_client_secret = '<replace with your client_secret>'
    headers = {'content-type': 'application/json'}
    url = 'https://auth.trillianthealth.com/oauth/token'
    data = {
        'client_id': my_client_id,
        'client_secret': my_client_secret,
        'audience': 'https://api.trillianthealth.com',
        'grant_type': 'client_credentials'
    }
    response = requests.post(url, headers=headers, data=json.dumps(data)) 
    return response.json().get('access_token')

Returning A Single Provider

Create a function to call the Provider Lookup endpoint and return provider data using your access token, then create one to pretty-print the results.

def get_api_result(npi: str) -> dict:
    user_agent = ""
    url = f"https://api.trillianthealth.com/v1/providers/{npi}"
    headers = {
    "accept": "application/json",
    "authorization": f"Bearer {get_access_token()}",
    "user-agent": f"{user_agent}"
    }
    response = requests.get(url, headers=headers)
    return response.json()


def pprint_result(result: dict) -> None:
    from pprint import pprint

    pprint(result, sort_dicts=False)

Finally, we define our NPI, call the endpoint, and pretty-print the response!

npi = "1922037787" #Replace with the NPI of your choice.

pprint_result(get_api_result(npi))

Returning Multiple Providers


Create a function that accepts a list of NPIs and uses the get_api_resultfunction we created earlier to return selected fields from the Provider JSON response.

def create_provider_dataframe(npis: list):
    data = []
    for npi in npis:
        npi_data = get_api_result(npi)
        row = {
            'npi': npi_data['npi'],
            'active': npi_data['active'],
            'first_name': npi_data['name']['first'],
            'organization': npi_data['affiliatedOrganizations']['items'][0]['name'],
            'primary_specialty_description': npi_data['primarySpecialty']['description'],
            'percent_male': npi_data['patientPanel']['gender']['percentMale'],
            'percent_female': npi_data['patientPanel']['gender']['percentFemale']
        }
        data.append(row)

    df = pd.DataFrame(data)
    return df

Create a list of NPIs, and call the dataframe function to return results on multiple Providers.

npi_list = ["1922037787","1053314971"]

npi_dataframe = create_provider_dataframe(npi_list)

print(npi_dataframe)

Once you have created the dataframe, you can save it locally as a CSV. This command will create (or overwrite) a file in the same directory as your notebook.

output_csv_file = 'npi_data.csv'

npi_dataframe.to_csv(output_csv_file, index=False)

print(f"DataFrame written to {output_csv_file}")