SMART/HL7 Bulk Data Access (Flat FHIR)

In the spring of 2020, the ONC published a rule regulating the 21st Century Cures Act API requirement along with protections against information blocking. One of the APIs covered in this rule is the SMART/HL7 FHIR Bulk Data Access API, or Flat FHIR API, which enables access to patient-level data across a patient population, supporting many use cases across the healthcare ecosystem, including:

  • Integration of an internal clinical system with an EHR
  • Biosurveillance, syndromic surveillance, and disease reporting
  • Post-marketing surveillance of therapeutics and devices
  • Combining claims and electronic health record data to calculate quality measures
  • Building datasets to develop and tune machine-learning algorithms
  • Federated data sharing networks for multi-institutional research

Put simply, Flat FHIR is a standard to enable “push button” population health. An ACO, a researcher, or a public health authority should be able to, without special effort, extract a cohort of patient records from the EHR for further analysis. 

A learning healthcare system requires the ability to aggregate and analyze data at a population level, to better manage population health, deliver value-based care, and conduct discovery science. Access to data is a fundamental requirement for improving the health of individuals and populations. APIs for working with population level data, often referred to as bulk data, are needed to support this system.

Today, health systems perform bulk data export through proprietary pipelines, requiring teams of IT professionals to perform manual mapping to and from delimited text formats like comma separated values (CSV), for every single reporting and analytics pipeline, of which there are many. These manual processes are extremely expensive and time consuming, and are not sustainable.

The original FHIR and SMART APIs work well for accessing small amounts of data, but large exports perform poorly, as hundreds of thousands of individual API requests would be required. The SMART/HL7 FHIR Bulk Data Access API has been rapidly defined, standardized, and piloted to address bulk data use cases. Feedback on the Flat FHIR API from a wide range of early adopters across the health industry is being incorporated back into the standard to clarify and iterate on guidance.

The SMART team has created an open live website listing known implementations of the API at http://docs.smarthealthit.org/bulk-data-implementations/. Developers are able to initiate pull requests on the underlying public GitHub repository to add or update their own entries.  

View the Implementations Page

Resources:

  • FHIR Bulk Data Access Implementation Guide https://hl7.org/fhir/uv/bulkdata/index.html
  • Bulk Data Reference Server https://bulk-data.smarthealthit.org/
    The first bulk-data server to be created. Supports the standard completely, except for the optional “_typeFilter” parameter. Designed for client developers, the server includes a browser-based bulk-data client designed to be launched from within the bulk-data server configuration page. As a client-side app, it works only with open servers – useful for developers, presentations and demonstrations. It is also a great way to download some sample bulk data as NDJSON without having to know how the bulk-data works.
  • Bulk Data Client https://github.com/smart-on-fhir/sample-apps-stu3/tree/master/fhir-downloader
    A bulk-data command-line client written in NodeJS. Supports streaming and gzip. Includes a detailed graphical output. Supports JWKS authentication.
  • Bulk Data Tester https://bulk-data-tester.smarthealthit.org/
    Web based online tester for bulk data servers. Contains a large open source test suite and test runner. Can be used online, offline as CLI or as a remote service thanks to it’s public HTTP testing API.
  • Bulk Data Tools https://github.com/smart-on-fhir/bulk-data-tools
    A NodeJS library for working with and converting bulk data in different formats. Some utility functions such as reading directories and parsing files are also included.