Athena Health is a cloud-based EHR and billing company based out of Watertown, MA (Boston suburb) and run by Jonathan Bush.

From what I've gathered it's a good company--a little pricey for their billing services but paired with a quality electronic health record--with solid infrastructure and a pulse on the rapidly changing health/IT regulations & incentives.

Testament to this forward looking attitude is a robust API that I've worked with on two occasions. The first at a startup and most recently at Anne Arundel Medical Center to support their Collaborative Care Network.

Most importantly, Athena's API is well-documented, accessible, and stable

An "IO Docs" section of the developer portal allows you to test the webservices in-web-app, a huge help for getting started.

Here's an overview of what we did at AAMC.

Fetching Data From Athena

Since AAMC is a .NET shop (90% of hospitals are) we used the tools at our disposal: C#, SQL Server, SSIS. The first step involved setting up an account in Athena's Developer Portal. Then we gained access to AAMC's sandbox instance after contacting our Athena support reps and working through some data-use agreements.

Next up were two AuthUtility and HttpHelperUtility C# classes to take care of authentication and low-level HTTP plumbing, along with logging and a few other house-keeping tasks.

After successfully receiving a session-token from Athena, we began development of the "scraper" application logic and data-model required for persisting and integrating the data we needed.

We debugged and iterated through the retrieval and storage of Athena data in transient/permanent tables in the data warehouse. Then we cleaned up the execution code for the app so that it was an executable EXE supplied with parameters. This became important later as we encapsulated this program inside an SSIS package that performed the rest of the integration ETL.

Usage: AthenaScraper.exe <dev-key> <dev-secret> <practiceid> <athena-env> <database-config-name> <begin-date> <end-date> <athena-data-to-fetch>

Integrating Athena with Epic

The SSIS package that performs the rest of the ETL integrates our custom-persisted Athena data specifically with the Epic "Packrat/Cogito/Star" data warehouse model, including components like billing transactions, procedures, claims, encounters, providers, and patients.

The Control Flow of the SSIS package:

Upserting the Athena data from transient to persistent tables in an SSIS Data Flow task looked like:

Matching billing transactions to encounters was more difficult due to a heterogeneous IT environment where encounters may or may not be represented by internal and external systems: