An Open Source electronic patient record system
PHP JavaScript PLpgSQL CSS Gherkin HTML Other
Latest commit 1127967 Feb 10, 2017 @mikepargeter mikepargeter committed on GitHub Merge pull request #643 from openeyes/hotfix/move-migration
Hotfix/move migration
Failed to load latest commit information.
ansible Removes PPAs which do not exist and are not required. Nov 21, 2016
bin Removed redundant docker references and tooling Sep 21, 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 Merge branch 'master' into hotfix/move-migration Feb 10, 2017
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 Merge branch 'develop' into feature/OE-5990 Oct 13, 2016
.gitmodules clear out Oct 22, 2015
.htaccess cleanup Oct 22, 2015
.jshintrc OE-6208: Adds polyfill for dialog support Sep 23, 2016
COPYING Reinstated missing license file Feb 4, 2016
Gruntfile.js Removed debug Sep 6, 2013 Merge pull request #471 from openeyes/master Oct 12, 2016
RELEASE + update RELEASE file Apr 14, 2016
UPGRADE + add details of changes to yii dependency in the project Sep 26, 2013
Vagrantfile Remove commented out synced_folder options Sep 15, 2016
behat.yml Fixing tests for changes to class when fixing layout of link. Mar 3, 2016
bower.json OE-6208: Adds polyfill for dialog support Sep 23, 2016
build.xml Removed debug Sep 23, 2016
composer.json Fixed RRule to 1.2.0 Dec 1, 2016
composer.lock Fixed RRule to 1.2.0 Dec 1, 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 Adds proxy support to portal login Oct 17, 2016
package.json Adding in compass for JS testing Aug 22, 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.

Further Note: These options must be used each time the box is brought up; at the moment vagrant does not respect the original values used, and will fall over. See issue 457


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

Building and running under Windows has been tested using Cygwin (run as administrator - right click on the shortcut "Run as Administrator") to run git clone against the repository and also run the various vagrant commands.

Note: You should ensure that that the path you clone the repository to doesn't have any spaces in as Virtualbox complains about this during the build process.

The following commands should be installed as part of the Cygwin install:

  • git
  • openssh
  • rsync

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:

  • Resolve PHP 5.3 support issue 398
  • 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.

Known issues

  1. XDebug enabled in CLI - setting in ansible/vars/all.yml is ignored -


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.