An Open Source electronic patient record system
PHP JavaScript PLpgSQL CSS Cucumber HTML Other
Latest commit cf32348 Oct 11, 2016 @mikepargeter mikepargeter committed on GitHub Merge pull request #465 from biskyt/patch-1
Added disclaimer
Failed to load latest commit information.
ansible Fix for the php.ini changes being ignored Aug 18, 2016
bin Increased wait Aug 2, 2016
build OE-6162: Allow editing of comments whilst the whiteboard is still edi… Aug 23, 2016
features Updated DB DUMP with "cancel_patient_bookings" procedure and trigger … Aug 7, 2016
grunt PSR-2 compliance Aug 3, 2016
pdf replaced pdf with new help pdf. Aug 13, 2012
protected Fix to CVI patient factors migration. Oct 4, 2016
shared/img [OE-3731] Removed images from shared images directory and added a .gi… Jan 15, 2014
.bowerrc [OE-3731] Fixed grunt build and bower paths Jan 15, 2014
.editorconfig Merged master into OEM_169 Aug 4, 2014
.gitattributes Introduce end of line normalisation Jul 15, 2016
.gitignore Adding back the phpmd and phpcs rules. Aug 5, 2016
.gitmodules clear out Oct 22, 2015
.htaccess cleanup Oct 22, 2015
.jshintrc OE-5327: Add mocha/chai to jshint file Mar 23, 2015
COPYING Reinstated missing license file Feb 4, 2016
Gruntfile.js Removed debug Sep 6, 2013 Added disclaimer Oct 10, 2016
RELEASE + update RELEASE file Apr 14, 2016
UPGRADE + add details of changes to yii dependency in the project Sep 26, 2013
Vagrantfile Dropped the RAM requirements Aug 17, 2016
behat.yml Fixing tests for changes to class when fixing layout of link. Mar 3, 2016
bower.json Merge branch 'develop' into feature/worklists Jul 13, 2016
build.xml Reverting change to build file committed whilst forcing lint of whole… Aug 18, 2016
composer.json Merge branch 'feature/OE-6120' into feature/ecvi Aug 24, 2016
composer.lock + updated composer lock to reflect updates for release Sep 8, 2016
exclude.txt Exclude file for archive building Mar 12, 2015
favicon.ico updated favicon to nice blue colour version Nov 29, 2011
index.php + reinstate autoloader Jun 28, 2016
package.json Adding back the build file Aug 2, 2016



OpenEyes is a collaborative, open source, project led by Moorfields Eye Hospital. The goal is to produce a framework which will allow the rapid, and continuous development of electronic patient records (EPR) with contributions from Hospitals, Institutions, Academic departments, Companies, and Individuals.

The initial focus is on Ophthalmology, but the design is sufficiently flexible to be used for any clinical specialty.

Ophthalmic units of any size, from a single practitioner to a large eye hospital, should be able to make use of the structure, design, and code to produce a functional, easy to use EPR at minimal cost. By sharing experience, pooling ideas, and distributing development effort, it is expected that the range and capability of OpenEyes will evolve rapidly.


OpenEyes is provided under a GPL v3 license and all terms of that license apply ( Use of the OpenEyes software or code is entirely at your own risk. Neither the OpenEyes Foundation, ACROSS Health Ltd nor Moorfields Eye Hospital NHS Foundation Trust accept any responsibility for loss or damage to any person, property or reputation as a result of using the software or code. No warranty is provided by any party, implied or otherwise. This software and code is not guaranteed safe to use in a clinical environment and you should make your own assessment on the suitability for such use.


This is the main repository for development of the core OpenEyes framework. Event type modules are being developed in other repositories both by ourselves and third party developers. The OpenEyes Project Overview provides a list of currently stable modules. You may also be interested in our EyeDraw repository - this code is used by OpenEyes but may also be used independently.

The principal source of information on OpenEyes is the OpenEyes website

If you're interested in the OpenEyes project, join our announcements mailing list by sending a blank email to:

You can also send general enquiries to our main email address:

You can find us on twitter at:

Demo versions of OpenEyes featuring fictional patient data for testing purposes are available at: (u: username p: password).

Developers, developers, developers!

Developers can request to join our discussion list for third party developers by sending a blank email to:

If you need to share repositories with members of the core development team, you can find them listed as organizational members at:

OpenEyes follows the gitflow model for git branches. As such, the stable release branch is always on master. For bleeding edge development, use the develop branch.

Setup and installation documentation is available from the README file in the oe_installer repository.

We are beginning to evolve some documentation for developers on our github wiki including coding guidelines, working with the core team and our Event type module development guide.

Issues in the core should be logged through the github issues system for the moment. Though we will be making our internal JIRA system available in due course, and will transition logged issues across to this so that we can keep everything in one place Links for this will follow when this becomes available.

Dev Setup

To make life easier and also help ensure consistency in environments we use Vagrant + Ansible to build our development environments, the basic requirements for this are to have the following installed and available on the host machine:

Running vagrant up the first time will install any missing vagrant plugins:

Once the plugins have been installed you will need to run vagrant up again and then go and make a cup of tea whilst a base box is installed and configured. You'll be asked for your root password (Linux / OSX) as part of the set up process as your /etc/hosts files is updated with the machine IP and hostname.

Once the build has finished you can access OpenEyes using the link:


Note: Google Chrome is the supported browser for OpenEyes.

Command Line Options

To allow for multiple environments to be built at the same time the hostname and the servername (used in the VM GUI to identify machines) can be changed via the command line as below when building the VM:

--servername="My Open Eyes Dev Server"

Full usage:

$ vagrant --hostname="" --servername="My Open Eyes Dev Server" up

If either are omitted the default vales of "openeyes.vm"" and "OpenEyes Dev Server" are used for the hostname and servername respectively.

Note: if the options are omitted the default values are used, the command line options have to be before the vagrant command for them to work.


Is enabled in Apache by default and carries an up to 1 second time penalty on requests, if you don't need or won't be using XDebug at all then commenting changing lines 85 - 86 in ansible/vars/all.yml to comment out the package name will ensure it isn't installed.

# php_xdebug:
#   - php5-xdebug

By default Xdebug is disabled on the CLI due to documented performance issues when using composer.

Windows 10

You will need to have downloaded VC++ for Vagrant to be able to download base boxes for the build see this issue for more information

Useful Vagrant Commands

  • vagrant up - Will build the environment if it hasn't already been built
  • vagrant provision - Will update the machine with any Ansible configuration changes
  • vagrant status - Will tell you the status of the box
  • vagrant halt - Halt's the machine (going home for the night)
  • vagrant suspend - Will suspend the machine
  • vagrant destroy - Will remove the machine build

And if that's not enough there is the Vagrant documentation and also vagrant help


Additional / Outstanding tasks to be completed:

  • Tidy up the PHP build implementation
  • Full Windows platform testing
  • Configuration optimisation to make it easier to make changes to the build from a single file
  • Changes to support AWS provisioning (although this may be better left to a build specific Ansible playbook)
  • Tailor the roles better to the OE build rather than coding around more generic Ansible Galaxy based roles.


OpenEyes now supports full PDF printing using wkhtmltopdf, but it needs to be compiled with a patched QT library in order to work properly. As of version 1.12 a pre-compiled binary is shipped in the oe_installer repository. However, should you need to re-compile it, you can find instructions for doing this here.