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 pluginsexample
- 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 entity
proto
- Intermediate representationtestutil
- Unit testing helper functionstranspiler
- Syntax toproto
transpilation
-
Tooling
tools
- Various libraries/modules/IDE pluginsannotation_processor
- A Java compiler plugin to preserve documentation and function signatures.docgen
- A Javadoc doclet and gradle plugin to generate plugin function documentation, like indoc/
.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:
- Visual Studio Code Extension
- HL7v2 to FHIR mappings
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.