Leave a comment at the end of this page or email contact@krishagni.com
Architecture
Introduction
OpenSpecimen follows a modular, service-oriented architecture comprising three main layers:
Frontend (UI): User-facing web interface for data entry and management.
Backend (API): RESTful services implementing business logic.
Database: Central repository for metadata and audit logs.
Technology Stack: Java (Spring), Hibernate, Oracle/MySQL, REST APIs, VueJS (for UI).
Backend Architecture
Built using Java and the Spring Framework.
Follows a layered approach with Controller, Service, and DAO layers.
Business logic is exposed via RESTful APIs.
Uses Hibernate ORM for database interaction.
Supports modular plugins to extend core functionality without modifying base code.
Can be distributed across multiple servers for high availability.
Frontend Architecture
Implemented using VueJS for a responsive, single-page application experience.
Communicates with backend via REST APIs.
Uses reusable components and services for better maintainability.
Database Layer
Supports Oracle and MySQL databases.
Designed with normalized schema for flexibility and performance.
Tracks all entity changes via audit tables.
Security and Authentication
Implements role-based access control (RBAC).
Supports LDAP, Active Directory, and OAuth2 authentication.
Uses HTTPS for secure data transmission.
Maintains audit logs for all user actions.
Customisation and Extensibility
The plugin framework allows new features without altering the core code.
Supports custom forms, workflows, and reports.
Network Diagram
Notes:
This diagram depicts OpenSpecimen configuration for one environment. The same is replicated if there are multiple environments (e.g. test, production, etc).
This diagram does not include any integration components. E.g., automated freezers, EPIC, REDCap, etc. Refer to individual architecture documents for each integration.
Software Requirements
Component | Version |
|---|---|
Tomcat (App Server) | 9.x |
Apache (Web Server) | 2.4 |
MySQL (Database) | 8.x |
Java JDK (OpenJava) (Below OpenSpecimen v10.1) | 8 |
Java JDK (OpenJava) (OpenSpecimen v10.1 onwards) | 17 |
Others
SMTP server details
SAML/LDAP details to integrate with the institution's user account
SSL certificate for Apache
Domain name for OpenSpecimen (e.g. openspecimen.yourinstitute.edu)
Service account for VMs
Hardware Requirements
| Server | Operating System | Technical Specifications |
|---|---|---|---|
1 | Prod database server | Linux ( CentOS, Ubuntu, RedHat) | Quad-core CPU, 8GB RAM, 100 GB SSD HDD |
2 | Production app server | Linux ( CentOS, Ubuntu, RedHat) | Quad-core CPU, 8GB RAM, 100 GB any HDD |
3 | Test server | Linux ( CentOS, Ubuntu, RedHat) | Dual-core CPU, 8GB RAM, 100 GB any HDD |
4 | Printing server (for BarTender or NiceLabel) | Windows 10 |
|
User Access
Resource | Access |
|---|---|
VMs | Sudo access for the Krishagni VPN accounts |
Database | If provided by client, administrator/root access |
Sudo Access Details
Install OpenSpecimen as a service using
systemctl(RHEL lineage) /service(Debian lineage) commands.Restart OpenSpecimen service.
Configure and restart the Apache webserver.
Configure and restart database server (Oracle / MySQL)
Configure and restart MTA like Postfix. Optional. Required only if an intermediate MTA is used.
Create/update cronjobs
Leave a comment at the end of this page or email contact@krishagni.com