Wiki source code of 04. Technical information

Last modified by Branislav ŠIŠKA on 2024/09/12 19:30

Hide last authors
Branislav ŠIŠKA 2.1 1 = {{id name="04.Technicalinformation-1.Hardware"/}}1. Hardware =
2
3 The Clindata software runs on computer cluster located on Institute of Molecular and Translational Medicine (IMTM), Faculty of Medicine and Dentistry, Palacky University in Olomouc. The facility is secured and under global surveillance.
4
5 === {{id name="04.Technicalinformation-Descriptionofhardware"/}}Description of hardware ===
6
Branislav ŠIŠKA 4.1 7 **Server in virtualization system proxmox**
Branislav ŠIŠKA 2.1 8
Branislav ŠIŠKA 4.1 9 Memory: 48 GB
Branislav ŠIŠKA 2.1 10
Branislav ŠIŠKA 4.1 11 Processors: 8 cores
Branislav ŠIŠKA 2.1 12
13 **Data Storages**
14
15 Object storage
16
17 **Firewall**
18
Branislav ŠIŠKA 3.1 19 FortiGate 600E
Branislav ŠIŠKA 2.1 20
21 **~ **
22
23 = {{id name="04.Technicalinformation-2.Software"/}}2. Software =
24
25 === {{id name="04.Technicalinformation-Thesoftwarerequirements"/}}The software requirements ===
26
27 The only requirement for using the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software is Internet browser which supports HTML5 standard. The list of supported browsers:
28
29 * Chrome: (Current - 1) and Current
30 * Edge: (Current - 1) and Current
31 * Firefox: (Current - 1) and Current
32 * Internet Explorer: 11+
33 * Safari: (Current - 1) and Current
34 * Opera: Current
35
36 (Current means the last available version of given browser)
37
38 === {{id name="04.Technicalinformation-Programminglanguage"/}}Programming language ===
39
40 The main programming language used for development of the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) application is Java 8. Other technologies used for development are:
41
42 * Spring Framework v5.
43 * HTML, CSS
44 * JavaScript
45 * jQuery
46 * jQuery UI
47 * Bootstrap
48 * MathJS
49 * Datatables
50 * SQL
51 * Oracle database
52
53 === {{id name="04.Technicalinformation-Operationsystem"/}}Operation system ===
54
Branislav ŠIŠKA 5.1 55 Operation system installed on production servers is **RedHat Enterprise Linux 9.4.**
Branislav ŠIŠKA 2.1 56
57 === {{id name="04.Technicalinformation-Proxyserver"/}}Proxy server ===
58
59 The **Apache HTTP Server** is used as gateway from outside world to internal application running in the production server.
60
61 === {{id name="04.Technicalinformation-Applicationserver"/}}Application server ===
62
63 The **ClinData** application runs on **Apache Tomcat,** which is an open-source Java Servlet Container developed by the Apache Software Foundation
64
65 **~ **
66
67 = {{id name="04.Technicalinformation-3.Database"/}}3. Database =
68
69 === {{id name="04.Technicalinformation-TheClindataDatabase"/}}The (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) Database ===
70
71 The database used for storing data from the (% style="color: rgb(23,43,77);text-decoration: none;" %)**Clindata**(%%)** **software is **Oracle Database** (commonly referred to as **Oracle RDBMS**) which is produced by Oracle Corporation. Version of database is 12.1. Standard edition.
72
73 The Oracle database runs on separated Linux based server which si firewalled from external network (Internet) by hardware firewall. This database server is not accessible from outside of organization but only from enlisted inner servers (application and backup servers).
74
75 **~ **
76
77 = {{id name="04.Technicalinformation-4.Backup"/}}4. Backup =
78
79 There are more levels of data archiving to ensure data safety and quick database recovery. Data are archived on **database level** and **operation system level**
80
81 1. Database level backups
82 1*. **RMAN** utility is integral part of the Oracle database. It creates binary copy of whole database and stores it to filesystem. The RMAN utility is run **every week**. The files are stored internally on database server and are copied to two independent backup sites.
83 1*. **EXPDP/IMPDP** is data pump exporting data into text base backups. The EXPDP utility is run **every 4 hours**. The backup target is the same as with RMAN. It is stored to two independent backup sites.
84 1*. **Redo Logs** are archived **every day** to filesystem.
85 1. Operation system backups
Branislav ŠIŠKA 4.1 86 (% style="color: rgb(23,43,77);" %)Application server is backuped up on operational system level regularly in virtualization sytem (% style="text-align: left;" %)**Proxmox**(% style="color: rgb(23,43,77);" %).
Branislav ŠIŠKA 2.1 87
88 RMAN configuration file
89
90 CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
91 CONFIGURE BACKUP OPTIMIZATION OFF; # default
92 CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
93 CONFIGURE CONTROLFILE AUTOBACKUP ON;
94 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
95 CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
96 CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
97 CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
98 CONFIGURE MAXSETSIZE TO UNLIMITED; # default
99 CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
100 CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
101 CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
102 CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
103 CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/../../oracle/12c/dbs/snapcf_imtm.f'; # default
104
105 EXPDP configuration file
106
107 DIRECTORY=dtpump
108 DUMPFILE=registry.dmp
109 LOGFILE=registry.log
110 CONTENT=ALL
111 COMPRESSION=NONE
112 JOB_NAME=registry_migration
113 SCHEMAS=registry,registry_aud
114
115 = {{id name="04.Technicalinformation-05.Secureconnection"/}}05. Secure connection =
116
117 === {{id name="04.Technicalinformation-Security"/}}Security ===
118
119 As the (% style="color: rgb(23,43,77);text-decoration: none;" %)**Clindata**(%%)** **application is **web-based** application there is need to **secure communication** between **server** and **client's computer**. It is done by using **HTTPS** communication protocol which is encrypted using Transport Layer Security **(TLS).** This protocol is widely used for all secure transactions on the Internet (payment, emails etc.) and is considered as safe and unbreakable. It protects against man in-the middle attacks. Communication without the security layer (HTTP) is can be interfered by attackers, they can listen to it or change it.
120
121 === {{id name="04.Technicalinformation-Securityredirection"/}}Security redirection ===
122
123 All user requests coming via unsecured **HTTP** protocol are automatically **redirected** to secure **HTTPS** protocol. All communication between client and server is secured and there is no way how to connect to the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software via unsecured connection.
124
125 === {{id name="04.Technicalinformation-Certificate"/}}Certificate ===
126
127 The secured communication requires a certificate stored on the web server. The certificate must be signed by **trusted certificate authority**. The (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) server uses the certificate digitally signed by **TERENA** authority.
128
129 **~ **
130
131 = {{id name="04.Technicalinformation-06.Authenticationandauthorization"/}}06. Authentication and authorization =
132
133 === {{id name="04.Technicalinformation-Usersadministration"/}}Users administration ===
134
135 All user using the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) application must be registered before they can log in. There is no possibility to get unauthorized access to the server even for some demonstration purposes. There is a specialized application for user management - IMTM Admin tool.
136
137 The **Admin tool** is responsible for:
138
139 * Management of **institutions, companies, hospitals** and their departments. There can be unlimited number of organization levels, for example a university can have such structure university-faculty-department-laboratory. Each organization level can obtain different set of privileges and roles.
140 * Management of **users**. Every user is identified by email address as login and password. Users are assigned to their organizations. Users can work on more projects with different roles. It is allowed by** user profiles**. Number of profiles for a user is not limited. Each profile can have different set of **privileges and roles**.
141 * Management **roles and profiles**.
142
143 The Admin database with user's data is stored in the Oracle database as separated schema. Access to this schema is restricted only for admin users. The server with the Oracle database is firewalled out of public network and not accessible from Internet.
144
145 An account for new user can be created **only by administrator**. There is no way that user could create his account on its own.
146
147 These steps must be followed to **create new account**:
148
149 * New user asks a project owner to create new account
150 * The project owner asks administrator to create new account with specified privileges and roles
151 * The administrator creates new account and sets required privileges and roles
152 * The project owner checks account setting and approve it.
153 * New user receives his credentials and can log in.
154
155 === {{id name="04.Technicalinformation-Centralauthenticationservice(CAS)"/}}Central authentication service (CAS) ===
156
157 The (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) application must be connected with data from the IMTM Admin to control accounts, roles and privileges. It is done by integrating of the CAS technology into the ClinData software. The CAS technology consists of CAS Server and CAS Client.
158
159 The CAS server is responsible for authenticating users and granting accesses to applications. The CAS clients protect the CAS applications and retrieve the identity of the granted users from the CAS server.
160
161 = {{id name="04.Technicalinformation-07.PrivilegesandRoles"/}}07. Privileges and Roles =
162
163 === {{id name="04.Technicalinformation-Accessrestrictions"/}}**Access restrictions** ===
164
165 A user access can be restricted in two different areas:
166
167 * restriction in **access to** ClinData **functionality**
168 * restriction in **access to data** stored in the ClinData software
169
170 All restriction is set in the **IMTM Admin tool**.
171
172 === {{id name="04.Technicalinformation-Functionalityrestrictions"/}}Functionality restrictions ===
173
174 **Privileges**
175
176 Access privileges determine which (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) objects a user can browse or edit. Each functionality in the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software is reflected in corresponding privilege so the access to everything is controlled. Any user or group of users can have access to any privilege granted or restricted.
177
178 **Roles**
179
180 Roles are virtual entities which serve as container for more privileges.
181
182 There are predefined roles and users, or groups of users can be assigned to them. The most frequently used roles are:
183
184 * ClinData system admin - full access to all functions in ClinData, no restrictions, creating new project
185 * ClinData project admin - full access to all function in selected project including study designer
186 * ClinData project data manager - access to all functions needed to insert new/update patient’s data.
187 * ClinData project data monitor - access to all functions needed for study monitoring, validation and finishing CRFs.
188 * ClinData project data browser - read only access to selected data.
189
190 \\
191
192 === {{id name="04.Technicalinformation-Datarestrictions"/}}Data restrictions ===
193
194 Default setting for accessing of data in the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software is maximally restricted. A user can see only data he inserted himself. By default, he doesn't see any data inserted by any other user. Access to any other data must be explicitly permitted.
195
196 These options can be set:
197
198 * user can see only his data
199 * user can see data inserted by other user or group of users
200 * user can see data linked with an organization
201 * user can see all data in a study
202
203 === {{id name="04.Technicalinformation-Personaldata"/}}Personal data ===
204
205 There can be studies or registers which contain personal data. Access to this data can be restricted by special privilege.
206
207 These options can be set:
208
209 * user can see personal data
210 * user can't see personal data
211
212 \\
213
214 = {{id name="04.Technicalinformation-8.Logging"/}}8. Logging =
215
216 The ClinData software **records everything** happening in the system. Admin user can browse these records in user friendly way and analyze potential problems, watch user activities etc.
217
218 There are three different types of logging mechanisms:
219
220 * **Software logging** is done on programming language level and is very detailed. The log files contain data about internal state of the whole system in time of logging event. This approach is designed for detailed analyses of problems which happened in past.
221 * **Access logging** is designed for controlling of user’s activities. The access record contains data about who did an action and when. It logs all actions done on all objects in the system. Object can be study, patient, CRF form, file. These actions are logged:
222 ** create
223 ** open
224 ** change
225 ** add
226 ** remove
227 ** delete
228 ** export
229 * **Auditing** is focused to changes done in CRF forms. It records complete history of what was changed by users. One record contains data about:
230 ** when the change was done
231 ** who changed the data
232 ** what was changed
233 ** what is the new value
234
235 The important information is that the ClinData software** doesn't delete any record**. Every record in the database has system **flag ACTIVE**. Deleting of the row just sets this **ACTIVE** flag to **false**. The inactive rows are not displayed in the ClinData software but are still stored in the database.
236
237 **~ **
238
239 = {{id name="04.Technicalinformation-9.Softwaredevelopment"/}}9. Software development =
240
241 === {{id name="04.Technicalinformation-Issuetracking"/}}Issue tracking ===
242
243 Any problem found in the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software is documented and created as a **new issue in JIRA software**. JIRA software is developed by Atlassian and is an issue tracking tool. The new issue is analyzed, and priority is assigned.  The list of issues is sorted by priorities and processed by developers. When a serious problem is fixed then it is published in new version of the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software. The issue is also closed as done in JIRA.
244
245 === {{id name="04.Technicalinformation-Changesmanagement"/}}Changes management ===
246
247 All requests for changes planned in the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software are stored in JIRA. When a new request is coming then it is analyzed, time estimation is done, and priority assigned. The list of issues is sorted by priorities and processed by developers.
248
249 === {{id name="04.Technicalinformation-Versioning"/}}Versioning ===
250
251 The source code of the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software is stored in** GIT repository** which allows tracking of changes in files. There is possibility to browse history of any source code file in the repository. Every change is also documented so it is easy to understand the development cycle.
252
253 === {{id name="04.Technicalinformation-Codereview"/}}Code review ===
254
255 Any change done in source code of the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software must be **reviewed** by another developer. This process is called **code review**. This process minimizes number of bugs in source code because everything is double checked. **Bitbucket software** (developed by Atlassian) is used for code reviews. It prevents developers from using not proven code in public versions of the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software.
256
257 **~ **
258
259 = {{id name="04.Technicalinformation-10.Qualityassurance"/}}10. Quality assurance =
260
261 === {{id name="04.Technicalinformation-Testingenvironment"/}}Testing environment ===
262
263 All new versions of the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software must be tested and proven as functional and correct before they are published. There is a special environment which is used form testing of the new version before it is published. The testing environment must be similar to production environment to avoid configuration issues.
264
265 === {{id name="04.Technicalinformation-Unittesting"/}}Unit testing ===
266
267 Unit testing is a software testing method by which individual units of source code are tested to determine whether they are fit for use. There are actually more than one thousand-unit tests in the source code of the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software. All critical parts of the source code are covered by unit test close to 100%. Overall source code is covered by unit test by more than 85%. Any problem in unit testing is blocker for publishing of the version of the software.
268
269 === {{id name="04.Technicalinformation-Applicationtesting"/}}Application testing ===
270
271 The whole application is tested by application exploratory testing before it is published. The application testing is done in testing environment. Any problem in application testing is blocker for publishing of the version.
272
273 === {{id name="04.Technicalinformation-Publishing"/}}Publishing ===
274
275 Publishing process means that a new version of the (% style="color: rgb(23,43,77);text-decoration: none;" %)Clindata(%%) software is being released and made accessible for users. The Bamboo software (developed by Atlassian) is used for building and publishing new versions. Unit testing is also involved in publishing of the new version. In case of any problem in any unit test the whole publishing, process is interrupted, and an notification email is sent to responsible persons.