sitcomlab / Ethics-app

Ethics-application for the approval of user-studies
http://giv-ethics-app.uni-muenster.de
MIT License
2 stars 8 forks source link
angularjs bootstrap-4 committee document-generation ethics fontawesome nodejs nodemailer pdf-generation postgresql-database review-app review-process reviewboard user-study user-study-tool
Ethics-app

Ethics-app

Ethics-application for the approval of user-studies

Background

The Ethics-app is an implementation of the research paper by:

Marc Langheinrich, Albrecht Schmidt, Nigel Davies, and Rui José. 2013. A practical framework for ethics: the PD-net approach to supporting ethics compliance in public display studies. In Proceedings of the 2nd ACM International Symposium on Pervasive Displays (PerDis '13). ACM, New York, NY, USA, 139-143. DOI=http://dx.doi.org/10.1145/2491568.2491598

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:

  1. 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.

  2. 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.

  3. 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.

Reviewing process (document states)

The following flow chart shows the reviewing process of a document.

Reviewing-process

The status of the document can be updated by only 2 options: the system in the background or a Committee member after reviewing.

Architecture

The Ethics-app can be divided into 3 parts:

  1. the user-client (Web-UI to create documents)
  2. the member-client (Web-UI to review documents)
  3. the server (hosting both clients, serving an API, processing documents and generating PDF-files for downloading)

1. User client

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:

User-client

2. Member client

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:

Member-client

3. Database schema

Database-schema


Installation

1. Database

1.1. Postgres
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.

1.2. Database instance
createdb -h localhost -p 5432 -U postgres ethics-app
CREATE DATABASE ethics-app;
1.3. Database schema
node setup.js
# Linux & macOS
DEFAULTS=true node setup.js

# Windows
set DEFAULTS=true node setup.js
1.4. Default values (administrator account)
cp defaults.sql.sample defaults.sql
1.5. Example values
cp examples.sql.sample examples.sql

2. Ethics-app

2.1. Git/GitHub
2.2. GitHub repository
git clone https://github.com/sitcomlab/Ethics-app.git
2.3. Nodejs
node npm install
yarn install
2.4. Bower
node npm bower -g
bower install
sudo bower install --allow-root
2.3. Node-Server configuration
cp .env.sample .env
2.4 Client configuration
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'
    }
}
2.5 Host-server configuration
2.5.1 Automatic startup
# Start Ethics-app
@reboot         root    cd /home/<username>/Ethics-app && PORT=5000 node server.js >> log.txt
2.5.2 Port forwarding
# 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
2.5.3 Running multiple instances of App under different context paths
...
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: {
    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'
    }
}
2.5 Cleaning up during production
# Delete outdated PDFs
00 00 * * *   root    cd /home/<username>/Ethics-app && ./cleanup.sh
2.6 Setting up the Review reminder
# 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

3. Starting the Ethics-app

node server.js
# Linux & macOS
HTTP_PORT=4000 node server.js >> server.log

# Windows
set HTTP_PORT=4000 node server.js

License

MIT