Ethics-application for the approval of user-studies
The Ethics-app is an implementation of the research paper by:
The Ethics-app is used by the Institute for Geoinformatics, Münster for the approval of user-studies. Students and researchers can create documents for their projects and studies, which are reviewed by an Ethics committee. If an user-study contains ethical concerns, e.g. a participant will be recorded by camera or audio during the study, the researcher or student has to specify, why this is a requirement for the study. After the Ethics committee has accept the researchers request, the researcher can download the following PDF-files for the study, which are automatically generated on the server:
The Informed Consent form: This is the most important document. It assures that the participant gave his consent prior to participating in the study. Both you and your participant must sign the document, and you need to store your copy safely. Conducting a study without the written consent of the participant is not advised and can lead to various legal issues.
The Statement of the Researcher: The Statement of the Researcher provides guidelines for carrying out the study itself. You need to sign the Statement and store it safely together with the Informed Consent forms. This form is only for yourself and should not be handed to the participant.
Debriefing Information: The Debriefing Information provides a checklist for the debriefing after the experiment. It does not need to be signed as it only serves as a reminder of the most important points that should be mentioned during the debriefing. This list is not complete and needs to be extended based on the specific circumstances of the individual study.
The following flow chart shows the reviewing process of a document.
0
: First a document has been created by a researcher1
: The researcher is filling out the forms2
: The researcher has submitted the forms and no ethical concerns have been found in the user-study. The system accepted the researcher's request automatically. The researcher is able to download the PDF-files for his/her user-study. The PDF-files are generated automatically on the server-side and filled out with the data the researcher provided in the forms.3
: The researcher has submitted the forms, but ethical concerns have been found. An email has been sent to the Ethics committee as a request to review the document4
: A committee member has started to review the document and an email has been sent to the researcher about the status update5
: The committee member has published the review and an email has been sent to the researcher about the status update. But the researcher needs to revise the document and has to submit it again.6
: The committee member has published the review and an email has been sent to the researcher about the status update. The request has been accepted and the researcher is able to download the PDF-files for his/her user-study. The PDF-files are generated automatically on the server-side and filled out with the data the researcher provided in the forms.7
: The committee member has published the review and an email has been sent to the researcher about the status update. The request has been rejected, so that the researcher is no longer able to access his/her document. This option is used, when a researcher clearly violated the app-guidelines.The status of the document can be updated by only 2 options: the system in the background or a Committee member after reviewing.
The Ethics-app can be divided into 3 parts:
This screenshot shows the successfully reviewed document of a researcher. Due it was accepted, the researcher is able now to download all PDF-files for his/her user-study:
This screenshot shows the committee board with all documents and their different states. Documents with the status 3
need to be reviewed with the status 4
are already in progress:
sudo apt-get install postgresql postgresql-contrib
sudo -i -u postgres
brew install postgres
brew services start postgres
brew services restart postgres
brew services stop postgres
or simply download and install the Postgres.app.
ethics-app
sudo
, if you don't have permission):createdb -h localhost -p 5432 -U postgres ethics-app
psql
and run the following command:CREATE DATABASE ethics-app;
sudo
, if you don't have permission):node setup.js
Before you execute the setup.js
, please make sure, that you have already created the /sql/schema/defaults.sql
file or follow the instructions of 1.4. first. Check also if you have already created the .env
file or provide the following NODE ENVIRONMENT VARIABLES before you run the script:
POSTGRES_HOST
: Postgres host address (default: localhost
)POSTGRES_PORT
: Postgres port number (default: 5432
)POSTGRES_DB_NAME
: Postgres database name (default: ethics-app
)POSTGRES_USERNAME
: Postgres username (default: admin
)POSTGRES_PASSWORD
: Postgres password (default: admin
)POSTGRES_SSL
: Postgres ssl connection (default: false
)DEFAULTS
: Load default entries for the database with the file sql/schema/defaults.sql
(see 1.4. for reference) (default: false
)EXAMPLES
: Load example entries for the database with the filesql/schema/examples.sql
(see 1.5. for reference) (default: false
)If you are using NODE ENVIRONMENT VARIABLES, instead of the .env
, then start the script with the following command:
# Linux & macOS
DEFAULTS=true node setup.js
# Windows
set DEFAULTS=true node setup.js
setup.js
. Please create the file like this:cp defaults.sql.sample defaults.sql
/sql/schema/defaults.sql
file an overall administrator account. This account needs to be secret
, which will be hidden from the view of the users. The secret administrator is NOT a part of the Ethics committee and only there for hosting and administrating the app. There can be more administrators, if it is required, but it is recommended to split administrators from committee members. Administrators have full access to all data inside the application, which is critical, when entries, like universities, institutes, working groups, members and users would be deleted. Please checkout the upper database schema to get a full overview about all required attributes and dependencies.DEFAULTS=true
inside the .env
.setup.js
. Please create the file like this:cp examples.sql.sample examples.sql
EXAMPLES=true
inside the .env
!If you have Git already installed, you can use the CLI in your terminal.
Install Git: https://git-scm.com
Install the GitHub client: https://desktop.github.com
sudo
, if you don't have permission):git clone https://github.com/sitcomlab/Ethics-app.git
package.json
inside the repository (run the command with sudo
, if you don't have permission):node npm install
sudo
, if you don't have permission):yarn install
sudo
, if you don't have permission):node npm bower -g
bower.json
:bower install
sudo bower install --allow-root
cp .env.sample .env
.env
with your preferred text editor and configure the app appropriately for your host-server./public/config.js
and configure the app appropriately for your host-server:serverSettings: {
development: {
host: 'http://localhost',
port: 5000,
apiPath: "/api",
memberClientPath: '/member-client',
userClientPath: '/user-client'
},
production: {
host: 'http://localhost',
port: 5000,
apiPath: "/api",
memberClientPath: '/member-client',
userClientPath: '/user-client'
}
}
sudo nano /etc/crontab
and add the following lines:# Start Ethics-app
@reboot root cd /home/<username>/Ethics-app && PORT=5000 node server.js >> log.txt
>> log.txt
to automatically log the output of the console to a text-file./etc/crontab
, if you want to create an internal redirect from externally accessible port 80, to internal port 5000, as well as port 443 to internal port 5443:# Redirecting
@reboot root iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT && iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT && iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000 && iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 5443
iptables
is not accessible, it is recommended to use an Apache server or nginx server as a reverse Proxy.<YOUR-DOMAINE>/app1/
and <YOUR-DOMAINE>/app2/
. Modifications in the following files are necessary as well as the usage of an already configured reverse Proxy..env
files:...
MEMBER_CLIENT_PATH='/app1/member-client'
USER_CLIENT_PATH='/app1/user-client'
...
...
MEMBER_CLIENT_PATH='/app2/member-client'
USER_CLIENT_PATH='/app2/user-client'
...
etc.
serverSettings
in all /public/config.js
files:serverSettings: {
development: {
host: 'http://localhost',
port: 5000,
apiPath: "/api",
memberClientPath: '/app1/member-client',
userClientPath: '/app1/user-client'
},
production: {
host: '<YOUR-DOMAINE>',
port: 80,
apiPath: "/api",
memberClientPath: '/app1/member-client',
userClientPath: '/app1/user-client'
}
}
cleanup.sh
script deletes all PDFs older than 7 days, which are presumed to not be needed anymore. Open the CRON tab sudo nano /etc/crontab
and add the following lines to it:# Delete outdated PDFs
00 00 * * * root cd /home/<username>/Ethics-app && ./cleanup.sh
9°° am
.REMIND_AFTER=7
in the .env
file.REMIND_UNTIL=14
, everyday between REMIND_AFTER
and REMIND_UNTIL
an Email will be sent to the members. To avoid this, set REMIND_UNTIL=0
.REMIND_ALL=false
. In this case the reminders will sent to corresponding members first, if a document is related to a course.sudo nano /etc/crontab
and add the following lines to it:# Review reminders
00 09 * * * root cd /home/<username>/Ethics-app && REMIND_AFTER=7 REMIND_ALL=false node reminder.js >> reminder.log
01 09 * * * root cd /home/<username>/Ethics-app && REMIND_AFTER=14 node reminder.js >> reminder.log
02 09 * * * root cd /home/<username>/Ethics-app && REMIND_AFTER=21 REMIND_UNTIL=30 node reminder.js >> reminder.log
node server.js
Before you start the server, please create a .env
file or start the websever with the following NODE ENVIRONMENT VARIABLES:
NODE_ENV
: server environment (default: development
, option: production
, which uses https with a certificate)SERVER_URL
: url/domain of the host-server (default: http://ethics-app.uni-muenster.de
)SERVER_PORT
: port number of the host-server (default: 80
)MEMBER_CLIENT_PATH
: path to the member-client on the host-server (default: /member-client
)USER_CLIENT_PATH
: path to the user-client on the host-server (default: /user-client
)HTTP_PORT
: port number of the nodejs-server: (default: 5000
)HTTPS_PORT
: secure port number of the nodejs-server: (default: HTTP_PORT + 443
)POSTGRES_HOST
: Postgres host address (default: localhost
)POSTGRES_PORT
: Postgres port number (default: 5432
)POSTGRES_DB_NAME
: Postgres database name (default: ethics-app
)POSTGRES_USERNAME
: Postgres username (default: admin
)POSTGRES_PASSWORD
: Postgres password (default: admin
)POSTGRES_SSL
: Postgres ssl connection (default: false
)SUPPORT_EMAIL_ADDRESS
: Email address of the support or Ethics committee for questions, which is used in the Informed consent forms for the participants (default: ifgi-ethics@uni-muenster.de
)SENDER_NAME
: Name of the sender for Emails (default: Ethics-App
)SENDER_EMAIL_ADDRESS
: Email-address of the sender, so users can reply to it, if they have question (default: ifgi-ethics@uni-muenster.de
)SMTP_HOST
: SMTP host address (default: smtp.gmail.com
)SMTP_PORT
: SMTP port number (default: 465
)SMTP_SSL
: SMTP ssl connection (default: true
)SMTP_EMAIL_ADDRESS
: SMTP email address, which is used to send emails via nodemailer to send document-Ids and notify the users and members about changes (default: undefined
)SMTP_PASSWORD
: SMTP password (default: undefined
)REMIND_AFTER
: Amount of days after a reminder Email will be sent everyday (default: 7
)REMIND_UNTIL
: Amount of days until a reminder Email will no longer been sent (default: 0
)REMIND_ALL
: Remind all members, if false
the reminders will sent to corresponding members first, if a document is related to a course (default: true
)JWTSECRET
: Secret for the JSON-Webtoken-authentication (default: superSecretKey
)If you want to run the application, you need to specify the SMTP_EMAIL_ADDRESS
and SMTP_PASSWORD
, otherwise no Emails with the document-IDs can be sent.
If you are using NODE ENVIRONMENT VARIABLES instead of the .env
, then start the script with the following command:
# Linux & macOS
HTTP_PORT=4000 node server.js >> server.log
# Windows
set HTTP_PORT=4000 node server.js