Skip to content

This is an engine that converts data of one structure to another, based on a configuration file which describes how. There is an accompanying syntax to make writing mappings easier and more robust.

License

Notifications You must be signed in to change notification settings

GoogleCloudPlatform/healthcare-data-harmonization

Repository files navigation

Whistle Data Transformation Language

Introduction

Whistle is a mapping language used for converting complex, nested data from one schema to another.

Whistle is a terse, efficient syntax to describe transformations of healthcare data, but is applicable to any domain.

In addition to the built-in functionality, the engine can be extended with plugins which can provide native transformations, extra features, integration with external services, and otherwise extend the engine functionality.

Prerequisites

  1. Git
  2. JDK 11.x
  3. Gradle 7.x

NOTE Consider using sdkman - a standard platform for downloading/installing sdks: sdk install java 11.0.20-zulu; sdk install gradle 7.6

Getting Started

  1. Clone and build the repository.

    $ git clone https://github.com/GoogleCloudPlatform/healthcare-data-harmonization.git
    $ cd healthcare-data-harmonization
    $ gradle test
  2. Take a look at the Getting Started Tutorial

  3. Refer to the Language Specification for details

Currently in this repository

  • Whistle 2 Runtime

    • runtime - Execution engine
    • plugins - First-Party plugins
      • example - Example Plugin showcasing the plugin APIs
      • logging - Simple logging functions implementation
      • test - Unit Testing Plugin enabling writing unit tests in Whistle
      • harmonization - FHIR code translation support
      • reconciliation - Find and merge FHIR resources that refer to the same entity
    • proto - Intermediate representation
    • testutil - Unit testing helper functions
    • transpiler - Syntax to proto transpilation
  • Tooling

    • tools - Various libraries/modules/IDE plugins
      • annotation_processor - A Java compiler plugin to preserve documentation and function signatures.
      • docgen - A Javadoc doclet and gradle plugin to generate plugin function documentation, like in doc/.
      • languageserver - An LSP implementation for Whistle.
      • linter - A code formatting tool.
  • Documentation

    • doc - Guides, codelabs, language spec, and plugin function documentation.

Coming Soon to this repository

In no particular order:

  • Visual Studio Code Extension
  • HL7v2 to FHIR mappings

Where is Whistle 1?

This repository contains what is technically Whistle 2, which is a from-scratch rewrite of Whistle. This is now the current and actively maintained version of Whistle.

The original version of Whistle is still available in the wstl1 directory of this repository for legacy purposes, however is not actively maintained, and we encourage all users to migrate to Whistle 2.

About

This is an engine that converts data of one structure to another, based on a configuration file which describes how. There is an accompanying syntax to make writing mappings easier and more robust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published