@jayamal - This is also worth a read to understand the underlying modular architecture and technology stack: http://devmanual.openmrs.org/en/Technology/architecture.html
At the heart of OpenMRS is a custom module framework which lets you extend and modify the default functionality of the OpenMRS core in accordance to your needs. Modules are also structured like the OpenMRS core, and consist of user interface, data access and service layers. Some OpenMRS functionality is pulled out into modules instead of being written into the core application. This allows users to upgrade the content in those modules without having to wait for the next OpenMRS release.