Category Archives: OpenEMR


Although I was unable to attend the first day of events due to a conflicting meeting in Atlanta (TAG – Georgia Technology Summit) I did manage to attend the after hours party and an impromptu “Birds of a Feather” discussion on the NIH challenge of taking a developed product “open source”.  Many options were presented including the Drupal and Apache models.

Some of the highlights of Day Two (Thursday)

The Synergy Between Open Source and Healthcare – A great history of Anesthesia system development and implementation at Duke.

Healthcare Panel Discussion – The panel contained all M.D.’s (something you never see at open source meetings) and was a great opportunity to get perspectives from  practicing ,  government, academic, and commercial physicians.

Alembic Foundation – A background on the new foundation which will carry the CONNECT project forward.

The Development & Growth of the OpenEMR Project – An overview of the project history and current status (Certification under way).


Thank you again for the great job organizing the event and finding quality speakers.   I look forward to another healthcare track next year.



OpenEMR – Force Secure Socket Login

If you want to force a SSL connection to OpenEMR, insert the code below into the index.php in /var/www/openemr/index.php

Place the lines below after the line “include_once(“library/sqlconf.php”);”

* Check for SSL connection to webserver
if ( !isset($_SERVER[‘HTTPS’]) || ($_SERVER[‘HTTPS’] != ‘on’) ) {
echo “Do not use OpenEMR over an unsecured connection.\n\n” ; echo “\nUse this link: <a href=’https://” . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘PHP_SELF’] .”‘>https://” . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘PHP_SELF’] .”</a><br>”;

OpenEMR – Check Database

This addition to the crontab is used to verify the database integrity and then to optimize the indexes and tables.

Add the following to the /etc/crontab

30 22 * * *     root    mysqlcheck -A -e –user={YOUR OPENEMR DB USER} –password={YOUR OPENEMR DB PASSWORD}  openemr
35 22 * * *     root    mysqlcheck -A -a –user={YOUR OPENEMR DB USER} –password={YOUR OPENEMR DB PASSWORD}  openemr
40 22 * * *     root    mysqlcheck -A -o –user={YOUR OPENEMR DB USER} –password={YOUR OPENEMR DB PASSWORD} openemr

OpenEMR – Macintosh Installation

OpenEMR on the Macintosh

Leopard 10.6.3

Configure PHP

Open the Terminal application in the Utilities folder

changes are based on the vi editor

cd /etc/apache2
sudo vi httpd.conf

/LoadModule php5
#LoadModule php5_module        libexec/apache2/
LoadModule php5_module        libexec/apache2/



create a file “/etc/php.ini” with the following contents.    The Date/Time are eastern so you need to substitute your TZ in “date.timezone”

; Openemr Stuff
short_open_tag = On
max_execution_time = 60
max_input_time = 90
memory_limit = 128M
display_errors = Off
log_errors = On
register_globals = Off
post_max_size = 30M
magic_quotes_gpc = On
file_uploads = On
upload_max_filesize = 30M
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
date.timezone = “America/New_York”

Add the following to apache setup

sudo vi /etc/apache2/other/openemr.conf

<Directory /Library/WebServer/Documents/openemr/documents>
order deny,allow
Deny from all
<Directory /Library/WebServer/Documents/openemr/openemr/edi>
order deny,allow
Deny from all
<Directory /Library/WebServer/Documents/openemr/era>
order deny,allow
Deny from all



Download from

Open mysql-5.1xxxx.pkg

follow the default settings

Install the MYSQL.prefPane

Turn on Apache2 (Webserver)

In the System Preferences panel click Sharing and then turn on the checkbox for Web Sharing

Verify Apache2 (web sharing) is running by clicking on the IP address shown for your personal website and the computer’s website.

Follow the linux installation

the changes are….

Extracting the Tarball

Step 3 – Use the following

mv openemr-3.1.0               /Library/WebServer/Documents/openemr

Cleaning up FileSystem Permissions

Step 4 – Instead of apache:apache use _www:_www

Follow the remaining steps of the linux installation

OpenEMR – Dump Database

Updated: On some systems (debian squeeze) the statement (let OLDFILES=${FILENAMEDATE}-${KEEPDAYS}) will no longer execute properly so it should be updated to (OLDFILES=`expr ${FILENAMEDATE} – ${KEEPDAYS}`).   The correction has been applied to the script below.

As part of our backup process on the OpenEMR system we create hourly dumps of the database. The script below handles the database export, compression, and daily cleanup. This script can be run manually but we choose to place it in /etc/cron.hourly.

The script is currently running on a Debian (lenny) system but should work on ubuntu and Centos.

# dump openemr db
# This script will create a backup of the openemr database
# and store it in LOCATION with the file format of
# for example at 2am on June 16 2010 the file would appear as
# /var/log/mysql/backup/mysql_openemr.167.02.dump.gz
# LOCATION=directory to store the backups
# KEEPDAYS=number of days to hold dump file before deletion
# mysqldump options
# GZIP=0 do not zip files
# GZIP=1 zip files
# Username and Password for mysql
# change this for your installation
# dump the database
# zip the file if GZIP set
if [ ${GZIP} -ne 0 ]
mysqldump ${OPTIONS} –user=${USERNAME} –password=${PASSWORD} openemr | gzip >${LOCATION}/${FILENAME}.gz
mysqldump ${OPTIONS} –user=${USERNAME} –password=${PASSWORD} openemr >${LOCATION}/${FILENAME}
if [ ${FILENAMEHOUR} -eq 0 ]
for fname in ${FILENAMES}
FDATE=`echo ${fname} | cut –delimiter=. -f 2`
if [ ${FDATE} -lt ${OLDFILES} ]
echo Deleting ${fname}
rm ${LOCATION}/${fname}