Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/airslie/renalware-core

Renalware uses demographic, clinical, pathology, and nephrology datasets to improve patient care, undertake clinical and administrative audits and share data with external systems.
https://github.com/airslie/renalware-core

rails renal ruby

Last synced: about 1 month ago
JSON representation

Renalware uses demographic, clinical, pathology, and nephrology datasets to improve patient care, undertake clinical and administrative audits and share data with external systems.

Awesome Lists containing this project

README

        

# Renalware

Renalware uses demographic, clinical, pathology, and nephrology datasets to improve patient care,
undertake clinical and administrative audits and share data with external systems.

## Technical Overview

renalware-core is a Ruby On Rails [engine](http://guides.rubyonrails.org/engines.html) encapsulating the majority of Renalware's
features in a re-usable [gem](http://guides.rubygems.org/what-is-a-gem/). When a renal unit deploys Renalware, it will create its own _host_
Rails application, and configure it to include the Renalware engine. The host application may be
extremely thin, adding no custom features other than site-specific configuration, or it may include
Ruby, HTML and JavaScript to override or augment renalware-core's features.

While the engine is intended to be deployed inside a host application in production, it can be run
stand-alone in a local development environment (or indeed deployed in a limited way to somewhere like Heroku) by employing
the _demo_ host application that ships inside the engine. This demo app (in `./demo`)
allows a developer to quickly mount the engine, and is used also used by Rails integration tests (which is why
it is in the `./spec` folder)

## Get up and running locally

> An alternative Docker approach will be available shortly

As a Rails developer we assume you are using OS X or Linux (natively or inside a [VM](https://www.virtualbox.org/wiki/Downloads) on Windows),
and have the following installed:

* Git
* Postgres 12+
* a ruby version manager (e.g. [rbenv](https://github.com/rbenv/rbenv) or [RVM](https://rvm.io/))
* NodeJS

### Postgres setup

Set up Postgres user with a password - for development purposes this can be your system login.

```bash
sudo su - postgres
psql template1
```

At the psql prompt run the following (replacing `` and `` accordingly):

```sql
CREATE USER renalware WITH PASSWORD 'renalware';
ALTER USER renalware WITH SUPERUSER;
ALTER USER renalware WITH LOGIN;
```

### Configure Ruby

Check the `ruby` declaration at the top of the Gemfile to see which version of Ruby to install
using your preferred Ruby version manager.
If using rbenv for example:
```bash
rbenv install
cd renalware-core
rbenv local
```

### Install app dependencies and seed the database with demo data

```bash
gem install bundler --conservative
bundle exec rake db:setup
```

### Run the server

```
$ bin/dev
```

> Note `bin/dev` starts a sever in the demo directory. Just executing `rails server` will not work.

Visit [http://localhost:3000](http://localhost:3000)

Login in one of the demo users (in order of role permissiveness):
- superkch
- kchdoc
- kchnurse
- kchguest

They all share the password `renalware`

## Running tests

### Install chromedriver

#### MacOS

- Install Chrome
- Download chromedriver from eg [here](https://chromedriver.storage.googleapis.com/index.html)
- Unzip and place in location in your PATH eh `/usr/local/bin`
- If you have chromedriver errors it maybe your installed version of Chrome is not
compatible your chromedriver version. In this case check your versions with:

```
chromedriver -v
chrome -v
```
and consult the driver release notee eg for [2.38](https://chromedriver.storage.googleapis.com/2.38/notes.txt)
to check compatibility

#### Ubuntu

```
sudo curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
sudo echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
sudo apt-get -y update
sudo apt-get -y install google-chrome-stable
```

Download latest chromedriver from wget https://chromedriver.storage.googleapis.com/index.html e.g.

```
wget https://chromedriver.storage.googleapis.com/81.0.4044.69/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/bin/chromedriver
sudo chown root:root /usr/bin/chromedriver
sudo chmod +x /usr/bin/chromedriver
```

### RSpec unit and integration tests

bundle exec rspec

### Cucumber acceptance tests

Run domain tests which bypass the UI:

bundle exec cucumber

Run web tests exercising the UI:

bundle exec cucumber TEST_DEPTH=web --profile rake_web

> Test coverage reports can be found in `coverage/`

## Code Quality

Code quality can be analyzed using by running `codeclimate analyze`. To setup
CodeClimate locally read the setup instructions:

https://github.com/codeclimate/codeclimate

## Deploying

## General notes

#### Engine migrations

`config.active_record.schema_format = :sql` in `application.rb` is used the engine
uses Postgres views and functions which are not properly supported in a `schema.rb`

##### Creating scenic views

As we are an engine this is the workaround for now.
```sh
bundle exec demo/bin/rails generate scenic:view my_view_name
```
Then copy the new files from demo/db/views and demo/db/migrations
to ./db/views and ./db/migrations

#### Throttling login attempts

[rack-attack](https://github.com/kickstarter/rack-attack) is configured to throttle login attempts.
Only 10 attempts per username as permitted in any one minute in an attempt to thwart login attacks.

#### Test Configuration

RSpec is configured to silence backtrace from third-party gems. This can be
configured in `.rspec` with `--backtrace` which will display the full backtrace.

#### Docker - WIP

```
docker-compose run web bundle exec rake db:setup
docker-compose up -d
```

#### Browser testing


Browserstack logo