Browse by type
OpenELIS Global is open enterprise-level laboratory information system software tailored for public health laboratories. OpenELIS is used at a national scale in a variety of settings, from small general hospital labs, all the way up to national reference labs, and all sizes in between.
Thousands of users use OpenELIS daily to make their laboratory jobs easier by automating work plans, importing results from clinical analyzers, and supporting complex workflows like pathology and cytology, reducing turnaround times, and increasing result accuracy for better patient care.
OpenELIS Global meets all relevant ISO and SLIPTA requirements for the accreditation of labs.
OpenELIS adheres to the strictest of security standards to keep your data safe and supports fully featured, standards-based interoperability to make it easy to receive lab orders and send results to other systems
Please vist our website for more information.
You can find more information on how to set up OpenELIS at our docs page
For the current fork/non-fork E2E validation design, artifact contracts, and
checkpoint/status model, see
specs/plans/ci-e2e-architecture-spec.md.
For operational troubleshooting of the E2E wrapper and downstream execution, see
specs/plans/e2e-ci-operator-model.md.
We welcome community contributions to help improve OpenELIS Global!
You need to install Docker and Docker compose
For development , you need to install Java 21
Download the OpenELIS Global Installer for each Release from the Release Assets
see full installation instructions for Offline Installation
Prerequisites for all methods below:
Before running any docker compose command, you must create a .env file with
your environment configuration:
cp .env.example .env
Then edit .env to customize settings for your environment (database passwords,
domain, etc.). See .env.example for detailed documentation of each variable.
IMPORTANT: Never commit .env to version control as it contains secrets and
server-specific settings. CI copies .env.example to .env before running
docker compose.
docker compose up -d
docker compose -f build.docker-compose.yml up -d --build
Here Artifacts (ie the War file and React code) are compiled/built on the local machine outside docker and just mounted into the docker compose setup. This speeds up the development process
Fork the
OpenELIS-Global Repository
and clone the forked repo. The username below is the username of your
Github profile.
git clone https://github.com/username/OpenELIS-Global-2.git
innitialize and build sub modules
cd OpenELIS-Global-2
git submodule update --init --recursive
cd dataexport
mvn clean install -DskipTests
Navigate back to the repository directory:
cd ..
Build the War file
mvn clean install -DskipTests -Dmaven.test.skip=true
Start the containers to mount the locally compiled artifacts
docker compose -f dev.docker-compose.yml up -d
Note : For Reflecting Local changes in the Running Containers ;
Any Changes to the Front-end React Source Code will be directly Hot Reloaded in the UI
For changes to the Back-end Java Source code
Run the maven build again to re-build the War file
mvn clean install -DskipTests -Dmaven.test.skip=true
Recreate the Openelis webapp container
docker compose -f dev.docker-compose.yml up -d --no-deps --force-recreate oe.openelis.org
| Instance | URL | credentials (user : password) |
|---|---|---|
| Legacy UI | https://localhost/api/OpenELIS-Global/ | admin: adminADMIN! |
| New React UI | https://localhost/ | admin: adminADMIN! |
Note: If your browser indicates that the website is not secure after accessing any of these links, simply follow these steps:
After making UI changes to the frontend directory , run the formatter to properly format the Frontend code
cd frontend
npm run format
After making changes to the backend directory, run the formatter to properly format the Java code
mvn spotless:apply
Recommended: Use the CI check scripts (replicates exact CI workflow):
# Run backend CI checks (formatting + build + tests)
./scripts/run-ci-checks.sh
# Run frontend CI checks (formatting + unit tests + E2E tests)
./scripts/run-frontend-ci-checks.sh
# Run both (full CI simulation)
./scripts/run-ci-checks.sh && ./scripts/run-frontend-ci-checks.sh
Options:
--skip-submodules: Skip submodule build (faster, for quick checks)--skip-tests: Skip tests (formatting only)--skip-e2e: Skip E2E tests (frontend only)Manual commands (if you prefer to run steps individually):
Run Code Formatting Check (Backend). This command checks code formatting and performs validation similar to the CI
mvn spotless:check
Run Build Check (Backend). This command builds the project similar to CI
mvn clean install -Dspotless.check.skip=true
To run Individual Integration Test
mvn verify -Dit.test=<packageName>.<TestClassName>
DBUnit test data note: DB-backed integration tests typically load DBUnit
Flat XML datasets from src/test/resources/testdata/ via
executeDataSetWithStateManagement("testdata/<file>.xml"). Prefer datasets
over inline SQL setup/cleanup to avoid test data pollution.
Run Frontend Formatting, Build, and E2E Test Checks similar to CI
Note: Frontend checks will only pass successfully if your development environment is properly set up and running without issues.
cd frontend/ # from project directory
npm install
npm run build
npm run cy:run # this will run e2e testing same CI
This project uses GitHub SpecKit for Spec-Driven Development (SDD). AI coding agents can use slash commands to create specifications, plans, and tasks.
Available Commands:
/speckit.specify - Create feature specification/speckit.plan - Generate implementation plan/speckit.tasks - Generate task breakdown/speckit.implement - Execute implementation/speckit.analyze - Validate consistencyReference Documentation:
.specify/memory/constitution.md - Governance principlesspecs/001-sample-storage/ - Complete SDD exampleFor comprehensive testing guidance, see:
.specify/guides/testing-roadmap.md - Complete testing
guide for both agents and humans.specify/templates/testing/ - Standardized test
templates.specify/guides/test-data-strategy.md - Unified test
data management guideFor E2E testing, integration testing, and manual testing, load test fixtures:
# Basic usage (loads and verifies automatically)
./src/test/resources/load-test-fixtures.sh --profile=core
# Harness fixture lane (includes HARN-* lane data)
./src/test/resources/load-test-fixtures.sh --profile=harness
# Reset database before loading (clean state)
./src/test/resources/load-test-fixtures.sh --profile=core --reset
# Load without verification (faster)
./src/test/resources/load-test-fixtures.sh --profile=core --no-verify
Note: The unified loader script provides dependency checks, verification, and reset capabilities. See Test Data Strategy Guide for details.
Please follow the pull request tips in order to make life easy for the code reviewers by having a well defined and clean pull request.
Please see our Contributor Code of Conduct
$ claude mcp add OpenELIS-Global-2 \
-- python -m otcore.mcp_server <graph>