In openIMIS, (nearly) everything is a module: even "low level" (and mandatory) features follow this principle.
In other words, even the following features are implemented as (interchangeable) modules:
Beyond these low-level modules, several modules will be dedicated to configuration/administration:
The real business needs will be implemented in dedicated modules:
In addition, the following modules are used for integrating openIMIS with external systems:
Tests cases for the various modules are documented in a separate wiki page.
Plugins (can) provide several types of archetypes, dedicated to the various openIMIS layers: openIMIS Mobile FE, openIMIS Web FE, openIMIS Online BE, openIMIS Batch BE,...
openIMIS can be deployed with an extra layer dedicated to implement a FHIR API, based on openIMIS core (base) modules.
Today the FHIR API is a unique module, but there is an open point on splitting it into separate modules (per FHIR resource?):
Code (static) analysis, as well as unit tests coverage metrics of each module, is automated via travis-ci and codeclimate. You can log into these tools via your GitHub login. If you are registered in openIMIS GitHub, you'll have access to openIMIS build job and code quality metrics.