Dear Community,
We’re reaching out for your insights regarding an upcoming transition involving the MambaETL codebase. Currently housed in UCSF-managed repositories, we’re preparing to migrate it into the OpenMRS community repositories.
What is MambaETL?
MambaETL, or simply Mamba, serves as an implementation for data Extraction, Loading, and Transformation (ETL) within the Open Electronic Medical Records System (OpenMRS) ecosystem. Its primary function is to transform highly normalised data, such as Observation (Obs) data, into a more denormalised format, facilitating faster data retrieval and analysis.
Our Approach:
The core functionality of MambaETL, comprised of a set of bash scripts and stored procedures/functions, is packaged as an OpenMRS module, featuring only the API submodule. This design allows implementers to seamlessly integrate MambaETL functionality into their projects by including it as a dependency. Notably, this modular approach enables us to easily enhance and maintain the core library independently, without being entangled in implementer-specific details. Separating the specifics also encourages implementers not to fork the Mamba repository.
Key Considerations:
-
Compile-Time Dependencies: MambaETL relies on properties passed at compile time, such as target analysis database specifications. This information is crucial for generating Liquibase changeset files dynamically during the build process.
-
Auto-Generated Build Files: During compilation, an ETL (SQL) file is auto-generated, containing both core scripts and any implementer-specific additions. This file is deployed by Liquibase at runtime.
Proposal:
We currently maintain the MambaETL core library module separate from any implementation specific details. It only contains logic and files that are core to the functioning of MambaETL.`
All core updates and enhancements to MambaETL go into this module and any dependent modules can choose to upgrade their version of MambaETL core seamlessly.
We have also created a second module which is essentially a MambaETL Reference/quick start module, which demonstrates how Mamba core can be integrated into other projects.
An implementer can choose to use the MambaETL Reference module as is and build ontop with their specific needs or just use it as a guide to setup a separate module to support MambaETL.` Below are the repository links:
Community Input:
Considering the outlined approach and key considerations, we seek your perspective on whether to maintain the current modular structure or consolidate into a single module that encompasses both core functionality and implementer-specific extensions. Your feedback and suggestions are highly valued as we strive to optimise the MambaETL framework for the broader OpenMRS community.
Thank you for your time and contributions.