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.
NOTE Consider using sdkman - a standard platform for downloading/installing sdks:
sdk install java 11.0.20-zulu; sdk install gradle 7.6
Clone and build the repository.
$ git clone https://github.com/GoogleCloudPlatform/healthcare-data-harmonization.git
$ cd healthcare-data-harmonization
$ gradle test
Take a look at the Getting Started Tutorial
Refer to the Language Specification for details
Whistle 2 Runtime
runtime
- Execution engineplugins
- First-Party plugins
example
- Example Plugin showcasing the plugin APIslogging
- Simple logging functions implementationtest
- Unit Testing Plugin enabling writing unit tests in Whistleharmonization
- FHIR code translation supportreconciliation
- Find and merge FHIR resources that refer to the same entityproto
- Intermediate representationtestutil
- Unit testing helper functionstranspiler
- Syntax to proto
transpilationTooling
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.In no particular order:
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.