Earlier this month we launched a redesign of the Commonwealth Fund’s Health System Data Center, a platform for exploring state health system data through custom tables, graphs and maps. With interactive visualizations covering dozens of topics, roughly 100 indicators, and tens of thousands of individual metrics, the platform helps make underlying data actionable for advocates, policy makers, and journalists tackling healthcare system issues all over the country.

We used Drupal 8 to build the data center backend, and we used React and Highcharts to render its interactive charts and graphs. Drupal 8’s flexible entity storage system made it a perfect fit for housing the data. Its capabilities for leveraging third-party APIs and JavaScript libraries made integrating with React and Highcharts far simpler than other alternatives.

We’re all incredibly excited to see the Health System Data Center live. For us at Aten, this is the latest in a series of project launches dealing with data visualization. Along the way, we’ve been working on a collection of tools specifically tailored to the unique needs of data-intensive projects. Here are six Drupal 8 modules that help solve specific challenges when working with data. (Note that some of these are sandbox modules. While sandbox modules don’t have official releases, you can still download the code, try them out, and of course, get involved in the issue queue!)


Six Drupal Modules for Working with Datasets

Datasets

We’ve worked on a lot of data projects that use a common architecture. Typically, projects include a collection of Datasets, each of which references a variable number of specific Indicators and Metrics. This module provides custom entities and related functionality for quickly deploying this common architecture.

JS Entity

When embedding multiple instances of a Javascript application on a page (in this specific case, a React app), we often need a way to very quickly pass data to the DOM. This module provides a configurable approach for defining which fields should be passed directly to Drupal’s JavaScript API for each specific view mode. It also offers a number of configuration options, including the ability to rename properties (or field names) to match what your application is looking for.

JS Component

Here at Aten, data projects often involve dynamic visualizations built as JavaScript applications (specifically with React or Vue) that are both embedded within a page rendered by Drupal and leverage data stored in Drupal’s entity system. This module provides an easy way for developers to define JavaScript apps entirely in YAML configuration files, which are exposed in Drupal automatically as blocks. Since they are ultimately just blocks, defined applications can be added to pages by any of the typical means.

MarkJS Search

We often need a way for users to quickly search through a lengthy list of indicators. This module provides fast, responsive highlighting and filtering for search input by leveraging the 3rd-party Mark.js JavaScript library.

Entity Importer

Site owners need a way to keep data accurate, relevant and up-to-date. This module provides a drag-and-drop interface for Drupal’s migrate functionality, making it easy to upload datasets as a series of CSV files. (Learn more from an earlier post: Entity Import: A User Interface for Drupal 8 Migrations.)

Entity Extra Field

When working with JavaScript applications exposed in Drupal as custom blocks, we often want a way to push those blocks directly into the node view page. This module provides a way for site builders to define Extra Fields on entities, which can be blocks, views, or tokens. Extra Fields can be placed and rearranged like any other entity field. (Entity Extra Fields module leverages Drupal’s “Extra Field” system. To learn more about Extra Fields, read Placing Components with Drupal's Extra Fields).


Let’s Talk

If you’re considering a data project for your organization and having trouble getting started, we’d love to help – whether that means talking through long-term goals, responding to a formal RFP, or anything in between. Get in touch and let’s talk about your data.