The Ad Hoc COVID Report prototype is now open source

In January, we wrote about a prototype application we developed that demonstrated the power of the Centers for Medicare & Medicaid Services’ Blue Button API and the Department of Veterans Affairs Lighthouse API to help people verify their COVID-19 vaccination status.

Today, we're happy to announce that we have open-sourced the code that powers the prototype. In the COVID Report repository, you will find sample Blue Button and Lighthouse clients, some examples of how to request and parse FHIR APIs, and a simple go web application.

CMS Blue Button Client

CMS Blue Button is a CMS web service that allows Medicare beneficiaries to share their data with third parties. To use it in a web application, you ask a user for their consent by providing them a link to Blue Button, where they can confirm to CMS that they want to share their data with your application.

Once they have agreed, they’re returned to your application, which can then query the Blue Button APIs for the user’s information. For the COVID Report prototypes, we used Blue Button to allow Medicare beneficiaries to pull data about whether they’ve received any COVID vaccinations.

COVID Report provides a simple Blue Button client that does not cover the full API surface of Blue Button, but should be helpful for getting you started.

VA Lighthouse

The VA Lighthouse APIs provide similar OAuth access to Veteran health data. COVID Report uses OAuth to allow the veteran to confirm to the VA that they consent to sharing their data with the application.

One difference is that in Lighthouse, you will be connecting with a Veteran’s actual electronic health record data, while most data in CMS Blue Button comes from Medicare claims, which can be somewhat slower to update.

COVID Report likewise provides a VA Lighthouse client that you are welcome to use how you would like.

FHIR

Both Blue Button and VA Lighthouse APIs represent their data with a JSON protocol implementing the HL7 FHIR specification. Both clients provide some examples for how to receive and parse this data into go structures containing useful data.

The FHIR specification is a protocol that allows medical APIs to communicate to each other in a consistent way, greatly easing healthcare interoperability. If this application were to be extended, because of FHIR it would be easy for it to talk to other electronic medical records without having to implement a new protocol for each one.

Check it out

The state of healthcare and government APIs is rapidly improving, and we at Ad Hoc hope that this application demonstrates one way you can tie them together to make something useful.

It’s licensed under the Apache 2.0 license, so you should probably be able to use pieces of it in whatever application you need.

If you have any questions, drop me a line.