popHealth is a reporting tool that leverages the Laika (projectlaika.org/) model to allow users to create dynamic queries on population health based on HITSP C32 patient records.
popHealth is a Ruby on Rails application that targets JRuby/Glassfish for deployment.
JRuby = 1.3.1
Sun Java >= 1.5 (1.6 required for the Glassfish gem)
PostgreSQL >= 8.1 for popHealth DB
End-to-end Install Instructions
Once you get a copy of the popHealth code from GitHub (github.com/pophealth/popHealth), these are step-by-step instructions to get popHealth installed on your local machine.
Install JRuby and Required Gems
Ensure that you have JRuby version 1.3.1 installed locally (available here: dist.codehaus.org/jruby/1.3.1/) and add <jruby-install>/bin to your PATH environment variable.
You will need to install Rails for JRuby, as well as the Factory Girl and Shoulda gems:
$ jruby -S gem sources -a http://gems.github.com $ jruby -S gem install rails $ jruby -S gem install thoughtbot-factory_girl $ jruby -S gem install thoughtbot-shoulda
Install the database adapters:
$ jruby -S gem install activerecord-jdbcmysql-adapter $ jruby -S gem install activerecord-jdbcpostgresql-adapter
Install the rest of the gem dependencies; from the root of your popHealth project:
$ jruby -S rake gems:install
Make sure your local database server is running and create a new user poplaika with password poplaika and a new database/schema called poplaika. Find the database.yml.template file in laika/config under your local popHealth project and edit it to include your database settings, for example:
development: adapter: jdbcpostgresql database: poplaika host: localhost port: 5432 <<: *login
Save the file as database.yml (i.e., without .template extension). Run the database migrations and load the seed data:
$ jruby -S rake db:create $ jruby -S rake db:schema:load $ jruby -S rake db:seed
Laika uses Saxon (saxon.sourceforge.net/) to handle XML Schema validation and XSLT. For this to function properly, the Saxon jars must be set in a CLASSPATH environment variable.
Navigate to the root of your popHealth project and run:
$ source bin/laika_env.sh
As an alternative, you may create the CLASSPATH environment variable and manually set them to the Saxon jars as part of the user's profile (otherwise you will have to follow the above steps every time you open a new terminal window).
Creating/Importing Patient Records
There are two ways to populate the popHealth database with patient records: popHealth can create statistically feasible randomized test records or import records from C32s on the file system.
Randomized Patient Records
Run the following rake task (you will be prompted for the number of records you wish to create):
$ jruby -S rake ph:randomize
Importing C32s from File System
Run the following rake task:
$ jruby -S rake ph:import
When prompted for the directory, enter the full path of the directory where the C32 files are located on disk, i.e. “/Users/popHealth/data/C32-files/” or “C:datapopHealthC32-files" on Windows.
Running the Server
To run the application, run the following command from the root of your popHealth project.
$ jruby script/server
Or you may deploy on Glassfish (instructions below). Point your browser to localhost:3000/.
Install the Glassfish server using the Glassfish gem:
$ jruby -S gem install glassfish
GlassFish will use default options for the server if you do not have a glassfish.yml file in your config directory. popHealth provides a glassfish.yml.template file that you may edit. Note that GlassFish cannot run as a daemon process on Windows.
Deploying popHealth on the GlassFish server is very simple. Run the following command from the root of your Laika project:
$ jruby -S glassfish
Point your browser to localhost:3000/.