Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Data Reconciliation Engine (DRE)

DRE is a patient frontend (UI) and Node.js server for reconciling health data.

Build Status Dependency Status

High Level Overview

DRE High Level Diagram

The purpose of the Data Reconciliation Engine is to take personal health data in a variety of formats (starting with BlueButton/CCDA) from multiple sources and parse/normalize/de-duplicate/merge it into a single Patient's Master Health Record with patient assistance (although most of hard work will be done automagically).

DRE's components

DRE Components Diagram

DRE has 4 primary elements

1 - Parsing and Normalization Library.

This parses incoming data into a homogenous, simplified and normalized data model in JSON format.

Parsing library code: amida-tech/blue-button

2 - Matching Library.

This takes the standardized data elements and flags probable duplicate values. New patient records are compared against the existing Master Health Record and automatically matched. The result produces a list of all entries in the new record, labelled as duplicates (0 % match), new entries (100% match), or partial matches (to be reconciled by patient in a next step).

Matching library code: amida-tech/blue-button-match

3 - Reconciliation Interface.

This provides a RESTful API and UI for review and evaluation of duplicate or partially matched entries, by the patient.

4 - Master Record Interface.

This provides a API for interaction with and access to the aggregated health record.

Documentation for record.js API

Screenshots of the Demo

-Landing Page -Master Health Record View -My Files

-Reconciliation Interface -Billing Section -Notes -Account History

##Quick up and running guide


  • Node.js (v0.10+) and NPM
  • Grunt.js
  • MongoDB
  • Redis
  • Ruby/Compass/Bower


# you need Node.js and Grunt.js installed
# and MongoDB + Redis runnning

npm install -g bower
gem update --system
gem install compass
npm install -g yo
npm install -g grunt-cli
npm install -g generator-angular

npm install
bower install

To run, use node server

Grunt commands:

grunt - To run Server Side tests

grunt test - To run and watch Client Side tests. Make sure a Selenium server and Node are running with webdriver-manager start and node server.js.

grunt travis-protractor - To run Client Side tests. Make sure a Selenium server and Node are running with webdriver-manager start and node server.js.

grunt build - Executes build and puts it into /dist.

grunt live - Build and watch files for development (just linting, compiling styles and watching).

Protractor Tests:

# you need MongoDB, Redis, Node, and Selenium running
# option selects which suite of tests to run (populate, scenarios, and/or medications)
# screenshots and report are saved to ./protractor-result/

npm install -g protractor
protractor client/test/conf.js --suite option


Contributors are welcome. See issues


Amida team
  • Dmitry Kachaev
  • Matt McCall
  • Ekavali Mishra
  • Jamie Johnson
  • Matt Martz
  • Jacob Sachs
  • Mike Hiner
  • Byung Joo Shin (summer '14 intern, UVA)
  • Kevin Young (summer '14 intern, UMD)
  • Nadia Wallace (winter '15 intern, MIT)
PWC team

We gratefully acknowledge PWC's essential support in the development of the FHIR components of DRE, among other important contributions to codebase of this open source project.

  • Afsin Ustundag

Release Notes

See release notes [here] (./


Licensed under Apache 2.0


Amida Data Reconciliation Engine (Server and Demo UI)




No packages published