Department of Advanced Skunk Works
Life is the first gift, love is the second, and understanding is the third. -- Marge Piercy
This document is part of the LINUX DOCUMENTATION PROJECT - LDP.
A Japanese translation is proposed by Shouhei Nagaoka, see the Linux JF (Japanese FAQ) Project.
Note: Werner Heuser, no longer maintains this LDP.
The most up-to-date version of this document will be at the mung.net
Gerardo Arnaez: I am an internal medicine doctor. I am extremely concerned with the state of medical informatics.
Werner Heuser: Working as a system administrator in the computer departments of two German hospitals I get inspired to search for medical applications created with Linux software. Besides this HOWTO I have written the Linux-Mobile-Guide, Linux-Infrared-HOWTO and the Linux-Ecology-HOWTO.
NOTE: This license has changed to GPL license.
Copyright © 2002 by Gerardo Arnaez. This document may be distributed under the terms set forth in the GPL license.
Copyright © 2000 by Werner Heuser. This document may be distributed under the terms set forth in the LDP license.
This is free documentation. It is distributed in the hope that it will be useful, but without any warranty. The information in this document is correct to the best of my knowledge, but there's a always a chance I've made some mistakes, so don't follow everything too blindly, especially if it seems wrong. Nothing here should have a detrimental effect on your computer, but just in case I take no responsibility for any damages incurred from the use of the information contained herein.
Though I hope trademarks will be superfluous sometimes (you may see what I mean at Open Source Definition : If certain words are trademarks, the context should make it clear to whom they belong. For example MS Windows NT implies that Windows NT belongs to Microsoft (MS). Mac is a trademark by Apple Computer. All trademarks belong to their respective owners.
A better place to look for medical information is Debian-Med which is already better organized than this page. You should look here first, then come here, as I think the focus of this How-To will eventually be a How-to install working applications that I think is useful and actually useful.
LinuxMedNews is a site designed to facilitate, amplify and begin the process of fundamentally changing medical education and practice into a more effective, fair and humane enterprise using modern technologies. The site uses Zope and a slashdot clone Squishdot to accomplish these goals. It is not intended to be doctor-centric, it is intended to be an interesting/fun forum and resource for anyone who has an interest in health care and open source.
The Spirit Project is a multilingual source of open-source software that makes this document just pale in comparison. Well designed, too big for me go over in detail, but seems to be another good source for software development and group news.
AMIA is a association that is quite a resource for the informatics community. Unfortunately, they require a subscription to join, but I have found that some mailing-lists will add you. I have found the cs-wg mailing list the most interesting, with some of the best discussion going around. The discussion are extremely good and informative.
Open Source Health Care Alliance (OSHCA) is a collaborative forum to promote and facilitate open source software in human and veterinary health care.
The linux distribution by Debian is a well known and highly respected one. The developers are all volunteers and dedicated. Recently, it was announced that Debian would start making a Debian Med Package. This is very very good news, because one of the things Debian is known for is its "APT-GET" interface. This allows applications to be installed with the simple command of "apt-get install [application]". For example, if I wanted to install the OIO record system, I would simply type in 'apt-get install oio' and the apt-get program would not only install the OIO software, but would also install any software that OIO is Dependant on to run, such as the postgres database and Zope software and would configure it so that you could immediately start using it.
If you think I sound enthusiastic about this project, I am, because it simply would be perfect for the rest of the projects that are being developed in that would ease installment.
I urge to visit the Debian Med Homepage, by clicking HERE
OpenEMR is a modular, HIPAA compliant, Open Source, cross-platform Electronic Medical Records system (EMRS) developed by Synitech Incorporated (www.synitech.com). It facilitates efficient office management through automated patient record journaling, and has been successfully integrated with third-party technologies including speech recognition, secure wireless access, touch screen portables, and biometric authentication. Interface screens are theme-able and optimized for consistency, simplicity, speed of access to patient information, and minimum eye strain. OpenEMR is based upon widely-used public standards to achieve maximum compatibility with evolving technologies
OpenEMR has been in development and beta testing for the past 2 years, and is finally released to the public for download. The system is cross platform, and operates on top of Apache or IIS, PHP and MySQL. OpenEMR is fully HIPAA compliant and includes advanced authorization and auditing functionality, HIPAA-mandated automatic timeouts, group-based user configuration, extensive logging, and supports patient-requested file changes. There is a growing developer base dedicated to making extensible and configurable encounter forms and patient/office statistical reports, and Synitech will soon release its template Notice of Information Practices intended for use with OpenEMR
I have yet to have any experience with this software. Please let me know if you have experience with it.
I tried installing it, but the instruction are for crap.
VISTA is a huge, VA hospital funded project, electron medical records system. I used this system, when I was a resident, in the Va hospital, and it simply was the best system (that I had used). I'm actually surprised that not more people know about this. I am not sure about the license, but the software and documentation is available under the Freedom of Information Act, but you need to send REQUESTS to get access to the software on CD. They are currently starting to host more and more of the code on-line, though.
SQL clinic is an impressive application that was developed for mental health workers, sponsored by their local hospital. What is most impressive is the amount of documentation. However it is unclear how useful the application would be for other non mental-health professionals.
EORS is a quite a well-developed medical management system used by the developers themselves in their OB practice. The layout is somewhat Star Trek-ish, but quite useful and well developed.
Freemed is a medical management software package that runs in a web browser window. It currently uses Apache, an SQL back-end (usually MySQL, but there's an SQL Abstraction for this), and PHP, and is non-browser specific. It aims to duplicate all of the functionality of programs such as The Medical Manager, while remaining free to the community.
Freemed-YiRC is a PHP package based on Freemed for use with Youth in Residential Care (YiRC) agencies. Its aim is to be a complete package to replace legacy non-free apps which aren't customizable. Since it's PHP-based, all that is needed for the client is a good Web browser with extensive table support. It can use both Postgres and MySQL databases.
GNUMed is a GNU's project to develop a comprehensive medical management solution.
GNOTARY is a client that provide the ability to notarize digital documents using a server to prove that digital documents have not been tampered with after their initial creation date. This is a very important piece of software.
The author provides a GNotary server to provide the actually notarization on a separate system.
Res Medicinae is to become a comprising software solution for use in Medicine which combines intuitive ease of use with the advantages of the CYBOP Framework. It uses latest technology adhering to common standards for medical software and will such be open to many other medical systems.
Res Medicinae is the attempt to overcome high pricing in the realm of Medical Information Systems and to provide users with a free, stable, secure, platform-independent, extensive system.
Res Medicinae is and will be free in every meaning. Its contributors enjoy working together communicating over mailing lists and are encouraged by the idea of sharing their knowledge with those people living on "the poorer side of" the world.
The "Littlefish Health Project" does not exist anymore. Some months ago, the administrators of both projects agreed to merge "Littlefish" into "Res Medicinae". You can still find the Littlefish material on ResMedicinae's website, see the menu there.
FreePM is an open source project to create a provider designed patient centered electronic medical record and practice management application. This is probably one of the most developed projects out there, seems already quite usable in its Demo. More significantly, they offer services to help actually run their software in a real office, but all the code is open-source and they seem committed to this philosophy.
I have successfully installed this and gotten it to run. Please look for further info in chapter 7.
Read a review of it HERE.
OIO is a Web-based information system for treatment outcome management. It is in production at the Harbor/UCLA Medical Center for clinical outcomes management and research data. Forms created with OIO and hosted on any OIO server can be downloaded as XML files. Once downloaded from the "Forms library" and imported into an OIO server, the necessary database tables are automatically recreated and the imported forms become immediately available to the users of that OIO server.
Note: This application is already in quite useful, but lacks 'already-made' forms for use. But these can be quickly designed within the application's interface quickly. Another to really try!
One of the interesting things about OIO project, one that makes it one of my favorites, is the ability to share forms that others have created. However, at this moment there are no forms present, but in the future they will be Here
MyPACS is a Web-based medical image management system. It is written in PHP 3.x and uses MySQL for the relational database back-end. It features searching capabilities, uploading of images and patient data from a Web browser into shared and private image repositories, and thumbnail creation and image conversion using ImageMagick. Currently MyPACS is not compatible with the DICOM standard.
The LIMS ASTM Standard (E1578 Standard Guide for Laboratory Information Management Systems) can be found in ASTM`s Annual Book of Standards Volume 14.01 Healthcare Informatics; Computerized Systems and Chemical and Material Information. There is a small terminology section in this standard that covers 25 terms that relate to LIMS. The purpose of the standard guide is to educate new LIMS users on the purpose and functions and the process of procuring a LIMS.
There is one other additional LIMS related standard in this book. This E2066 Standard Guide for Validation of Laboratory Information Management Systems. The BlazeLIMS Server by Blaze Systems Corporation LIMS is now supported on Linux.
Meditux is Java-servlet based software that provides a Web interface to MySQL or potentially any relational database engine which is JDBC capable. It was developed to support an Intranet site in a medical intensive care unit where it was used to collect clinical and research data.
Mumps Compiler is a compiler for a subset of the Mumps language, a language used mainly in health care. It is compatible with most operating systems with a standard C compiler. License: GPL OMEGA is an Open Source implementation of the M-Technology (MUMPS) programming language. It is extend-able, and currently embedded with MySQL; it is ideal as a trigger/validation front-end to SQL. License: free for non-commercial use.
My extremely brief answer would be it is the study of how medical data is recorded, stored, retrieved, displayed and exchanged. One of the big problems facing medicine is how to transfer medical data from one system to another.
Another answer comes from the AMIA.ORG site:
The Good Electronic Health Record (GEHR) , a major part of the work of the openEHR Foundation, is an evolving electronic health record architecture designed to be comprehensive, portable and medico-legally robust. It has been developed from the Good European Health Record project requirements statement and object model- the most comprehensive requirements documents ever developed for the electronic health record. This website is a public resource for documents and resources that have been used to build implementations of this record.
HL7lib Health Level 7 Library is a project that will provide a free, correct implementation of Health Level 7 functions. Health Level 7 is commonly used in large hospitals to send patient information among computer systems from different vendors. Since there is no reference implementation of HL7 many of these vendor systems vary widely in their interpretation of HL7.
The indefatigable Werner Heuser has an extremely informative and updated information site for Linux Based PDA's. It is at Tuxmobil.org
An increasing role in data collection for instance in hospitals, will be played by hand-held computers (HPCs) or Personal Digital Assistants (PDAs). More commonly known as PALMs. Linux offers way to exchange these data to servers, for instance via the IrDA port. See Infrared-HOWTO for details. A survey of non-Linux applications for the Palm device you may find at PalmPilot Medical - Palmtops PDAs HPCs Palm - Net Links.
For more info, on say Sharp Zaurus SL-5000D, look Here.
This section will grow as I am getting touch with a doctor who is actively developing OB-GYNE applications to use on it
If you have questions about this section, I urge you to email Gabriel M. Elder (gmelder (AT/@/AT) centurytel.net)
I will no longer aim this HOW-TO as an actual how-to. This section is deprecated and will no longer be maintained, but will not be removed.
This section is actually going to be the HOW-TO of this HOW-TO document. I intend to include instructions or refer to instruction on installing what available systems that are readily usable at this point.
I will try to be pretty cook book about how to install these applications, which means that if I can, i will always tell you what to type (at least what to type that works for me). The problem is that this assumes that you know what a shell window is and can switch directories with-in, which actually assumes a fair level of technical sophistication since most of us have gotten used to Microsoft based Windows systems. Which is to say that a lot of us only have interacted with a computer using a Graphics User Interface (Gui's), and that these installation require that you be familiar with Command Line Interfaces (CLI) like a terminal window or a shell.
If you don't know what I am talking about then I recommend you ask someone (me possibly) about what shell windows are, and probably what a UNIX-based Operating system looks like, especially without a GUI.
The OIO system starts a higher level of abstraction - starting with modeling "forms". The forms are then used to model/build progress notes etc. The OIO system makes use of a relational database back-end (PostgreSQL) - 1) making the data/metadata/presentation separation more distinct, 2) making integration with other system (e.g. legacy systems, GNUMed, SQL Clinic etc) easier, 3) making query construction/extension easier (via SQL).
If you search the OpenHealth mailing list archives, you will see extensive discussion regarding this in the context of GEHR and OIO. GEHR uses the same approach but calls this intermediate level of abstraction "archetypes". The advantage of the OIO/GEHR approach is that the metadata components can be plug-and-play - meaning that the system can be easily extended/customized AND portable medical records become easier to implement.
I can not stress how really good and how much documentation the developers of OIO have written. There are some confusing parts, especially if you are in a hurry. :) However, please read the install documentation at OIO then come back. Hopefully, I will import or streamline the documentation since, the developers want to support OIO on all distribution, whereas my slant is becoming more and more based on the Debian distribution.
One of the more aggravating things was find that Zope could not interact (connect) to the PostgreSQL database. What was happening (I will give greater detail later) is that the 'postgres' user could not be authenticated. I think this is a problem in that Krebs authentication is not installed by default. To fix this you need to cd /etc/PostgreSQL/ and find the pg_hba.conf file. Using what ever editor you like, find the bit of code that tells who can and can not access to the database. Unfortunately, the only way I could get it to work for now is to change:
I ran into this problem because apparently PostgreSQL does not like the
Note that Zope has changed its default port from 8080 to 9673 to avoid conflicts with the proxy server. You will not be able to get OIO to run correctly if you don't specify the correct ports that Zope is using. You can correct these by clicking on the main OIO folder, and selecting the Properties. Or you add /manage to the end of you OIO URL. For instance http://localhost:8673/OIO becomes http://localhost:9673/OIO/manage
You are looking for field base_URL and form_URL and you will see that OIO has port 8080 set up as the default. You need to change this number to 9673.
This is the second application that I see that I think is actually useful for the medical office. (One of my main concerns, as I will be using it exactly for that.)
You can get the entire package which include everything you need like Zope products and even python from Here and choosing FreePM-1.0b6-FULL-linux2-x86.tar.gz. This will include all the documentation.
Given that Tim Cook has put together everything you need to get a fully running FreePM application, I will first deal with installing the application as if you downloaded the full 14MB gzipped file. However, since Zope can be installed separately, and you may have other Zope applications going on, I will also discuss how to install the FreePM Zope product separately from installing Zope.
Once you have downloaded the 14 MB package, be sure to also download the extensions_for_1.0b6.tar.gz. At this point, it really doesn't matter what directory you have download the gzipped tar files into, but to play it clean and safe, I would download them or move them into their own directory. Then go ahead and gunzip FreePM-1.0b6-FULL-linux2-x86.tar.gz to unzip the file and then tar xvf FreePM-1.0b6-FULL-linux2-x86.tar.gz
Once the tar file has finished unpacking, you should see a new directory called FreePM-1.0b6-FULL-linux2-x86. To make things easier I would change the name of this directory to 'FreePM' like so mv FreePM-1.0b6-FULL-linux2-x86 FreePM
Move the extensions_for_1.0b6.tar.gz to the newly created FreePM directory and look for the 'Extension' directory and go ahead and move it there and unpack using the tar xvf
Tim Cook was smart and kind of enough to write an install script to install the Zope. Once you are in the FreePM directory (remember, the one that you created when you untar-ed the 14MB file), you run the script by tying ./install
Tim Cook also wrote two scripts to start the server and stop the server. Be sure you our in the FreePM directory. You will know this if you see the files 'start' and 'stop' in there. It is also the same directory where you ran the ./install. To start the Zope server, type ./start. However you might want to type ./start& to make it a background process which will free up your terminal window. This will also allow you to stop the Zope Server by typing ./stop instead of hitting the CRTL-C key combination, a rather blunt way of stopping the Zope server and not an aestheically pleasing way of stopping the zope process.
The key thing before I talk about installing the zope products is that, the first user, Admin, can only add other users and can not by itself actaully magane any products. You first need to add a new user and make the user a manager before you can do anything else.
To log into the running Zope server, you need to open a browser, type in http://127.0.0.1:8080 or depending on how new the Zope server is http://127.0.0.1:9673. If you look at the output during the install it will tell you what to what port to connect.
At this point you should the zope introductory page, if not, make sure you have the correct port.
Go ahead and click on the link that says Zope management interface or enter http:127.0.0.1:8080/manage and you should the zope management screen. You know you are in the correct section if you see a root folder at the top of the Left Frame. To make sure we are on the same page, go ahead and click on the Root Folder icon in the right Frame.
You then should see the list of contents of the Root Folder on the Right Frame.
Look for and click on the acl_users folder. select add new user, fill in the required fields. You leave the domain field blank. And then besure sure to select role. In this case, click on manager for this user.
I am having problems sucessfully loggin out completely using zope, so when you intend to switch users, be sure to completely close all broswer windows.
Once you added a new user that has the role of manager, log back in. THat is to say, Close all browers and open up a new browers and go the the zope management screen. You should be asked for a login at this point. Go ahead and enter in you new user login and password.
Once you are logged in as an user (not the admin user), go ahead and click on the Root Folder on the top of the left frame. Scrool to the bottom of the Right Frame and you should see the Import/Export button. You see a new screen. In the Field Import File Name, enter FreePMProduct.zexp and then hit the import button. You should see a new scree nindicating success
The next step, is to again hit on the Root Folder Icon at the TOP LEFT FRAME. Again hit the Import/Export button, but this time, you want to import FreePM.zexp. Then hit the Import button.
The 3D Slicer uniquely integrates several facets of image-guided medicine into a single environment. It provides capabilities for automatic registration (aligning data sets), semi-automatic segmentation (extracting structures such as vessels and tumors from the data), generation of 3D surface models (for viewing the segmented structures), 3D visualization, and quantitative analysis (measuring distances, angles, surface areas, and volumes) of various medical scans.
The 3D Slicer is freely available and provided as open source software. Its design is fully modular to encourage researchers to extend its functionality. It's new home is at www.slicer.org
By David Weisgerber (http://freshmeat.net/users/david84/)
About: KPumpe is a diabetes diary application with support for reading records from your glucometer. It supports the Onetouch Ultra and other glucometers where glucomodule plugins are available.
I haven't used this one yet, but I plan on installing it at work, and getting my patients to start using their glucose monitoring machines more.
License: GNU General Public License (GPL)
You can find out more about it Here
Having spend some time on looking at the available software, I can only say that currently, we simply have an abundance of development, but little progress. I keep seeing multiple projects trying to achieve the same thing, but the resources are spread too think and so they fail. I wonder if there were some way to concentrate the various developers onto one project. The questions remain as to what main ideas should be focused on. Obviously the first one should be a Medical records application. That is a coherent, portable, way to contain, process, and use all the medical data that is generate by a patient.
The second focus should be on software for a workign clinic. This seems to be much harder since it would involve the billling seciton. However this would also include things like scheduling and multitude of forms that a clinic uses in day to day use.
THe third focus (one I know little about) would be in the more specialized applications like Imagaing, which seems to already have quite a bit of working software, but is inherently hard to make because not everyone has access to CT scanners and such.
The other thing I want to point out is that this is not an un-biased LDP, I may stress something more than others because I think the foundation is better or that I have seen it actually work, so if you feel something is not right, please feel free to let me know.
I realize that urging people to consider debian as the standard linux system when it comes to medical applications is probably like arguing about religions. But.. :) The point is that our audience is not Linux gurus who only use slack or can configure applications from source tar balls. Debian provides an extremely sophisticated and easy to use installation process that is ideal for people who want to get a system running.
Now that I have been working for almost two weeks, here are a few things I have learned. While a resident, I did part of my training at the VA hospitals which had a superb information system, but it required that we type out everything from the smallest order to the emergency stat orders. This seemed to work weel for teh VA since most of the Doctors had residents do their notes or they tended to dictate very little, writing very breif, sometimes cryptic, notes about the status of their patient. Now that I am in the private world, the only thing that seems to be saving medicine are the transciptionists who take the garbled spped talk that doctors do and type out coherent statements. The problem that I see with many of these data systems is that seem to assume that doctors have the time which they dont (there is barely enough time to see a patient properly let alone do all the coding na dthen write out a clear note.
Several idea come out that doctors will merely have to tick off boxes on a palm device to indicate what they did, but this is fine for billing but not so for the actualy medical record, which even though is breif contains much more subtley then any billing coding system could have. Perhaps what we need is to maintain the medical record in its narrative form and have a parser go throught it and pull the important bits and then it would enter this stuff into database. It is an idea, but surely a worthwhile one since Doctors simply can not sit aroung computer terminals (as I am doing, but it is a Sunday)