Architecture
Architecture Overview
SORMAS is a server-based system written primarily in Java and Javascript. The SORMAS architecture is divided into three layers:
the access layer with the frontends and the ReST interface, which gives access to external systems,
the business logic, which groups the different functionalities into domains, and
the data access to the database and documents.
In the access layer, there is a web application for the users, which was implemented with the Vaadin framework, and an Android app.
The SORMAS API library includes the complete description of all data in the system and access to the business logic implemented by the SORMAS backend. It also includes translation (internationalization), which is used in the web application and the Android app and can also be used by external systems.
The business logic in the SORMAS backend is divided into domains: Case Surveillance, Contact Tracing, Event Surveillance, Sample Testing, Tasks, Reporting and Campaigns. These reflect the application areas already described in the data model. In addition, there are components for managing infrastructure data and users and for configuring features and the infectious diseases used on the system (Disease Configuration). Additional auxiliary modules provide uniform solutions for importing and exporting data, geocoding and notifications to users via SMS or e-mail and the creation and filing of documents.
In the data layer, a relational Postgres database is used. Access to it is via the Java Persistence API, which is implemented by Hibernate.
SORMAS backend, ReST and Vaadin web application are relying on Jakarta EE libraries (jax-rs, JPA, EJB). The open source application server payara is used as default.