OpenMRS highlevel architecture

Not being specifically in this field (not having a computer science background) I am trying to workout web application architectures. I’m doing my uni assignment on open MRS - I have a bit of an understanding but I do not have a structure where I can put these keywords in in order to draw a fitting multi layer architecture (nor do I understand all keywords). this diagram is sort of how it works in my head …. Im not sure it is right though?

The question is - What web application architecture does openmrs subscribe to (using the MSDN examples? • Mobile application • Rich client application • Rich Internet application (RIA) • Service application • Web application

Or does it look a little bit more like this diagram also borrowed from Microsoft.

If so then what makes up the following components of this diagram?

Presentation Layer - I gather that would be HTML 5 Rich UI Engine - ?no idea? Business Processing Components with This Be the X Forms Module? Isolated Storage - ?no idea?

Service Interfaces - ?no idea? Message Types - HL7/FHIR Application Facade - with this be tomcat Business Workflow - ?no idea? Business Components - ?no idea? Business Entities - ?no idea? Data Access Components - with this be hibernate Data Helpers Utilities - ?no idea? Service Agents - ?no idea?

Data Sources - MySQL

Any help you could give me would be great

1 Like

sorry here is the diagram that i am refering too from Micro$oft (can only post 1 picture )

1 Like

Wow this is nice work. Once I also drew a basic diagram similar to that, but it’s not detail as this much.

Good job! :+1:

Hello Ralph goodwork on the diagram - its always hard getting your head around this stuff.

The second architecture you posted is of a Rich Internet Application, this is not what Open MRS is built on, Rich Internet Applications are usually built on something like MS silverlight. @judeniroshan page is quite good and explains a lot but I think that you are after a bit more detail?

I am really just an implementer so i cant really help much maybe some of the more wise :slight_smile:developer types can help there are a few postes around though - here are a few i have found

@gsluthra posted a high level architecture diagram for Bahmni here:

@jthomas had a design forum on the subject - Design Forum 2017-07-17: Sync 2.0 architecture draft

@burke @wyclif and @lluismf have a good discussion on it here Getting to know the architecture of the openmrs code base

I hope that helps



Hi @ralphy I think your diagram is pretty close, may be I can shade some light on a few things here and there.

In the Presentation layer, I think those are more like actual implementations rather than the technologies and frameworks being used, the technologies are primarily HTML, CSS, Javascript along with some libraries and JSP for the legacy UI while for the reference application it is GSP (groovy). The REST API is really another layer atop of the service layer and supports both JSON and XML.

The glaring thing that is missing is spring which is kind of like the glue that brings most things together by providing the MVC framework, dependency injection, AOP, transaction management and its integration with hibernate provides the data access layer. FHIR sits on top of the service layer while HL7 is part of the service layer and isn’t used for access to the database. Hibernate is the actual DAO implementation that we use to access the database which also in turn uses JDBC at its core.

Tomcat is just one of the application servers where OpenMRS can be hosted and it isn’t part of the service layer, in fact it isn’t part of OpenMRS.