FreeMED

FreeMED is an opensource electronic medical record system based on Linux, Apache, MySQL and PHP (commonly referred to as LAMP or LAMPS).

History
The FreeMED project was officially started in 1999 by a single developer in the United States. Since then, it has become an international effort, with thousands of downloads and several internationalizations.

FreeMED is a direct descendent of AMOS, a Pascal/DBase program which was created in 1983 before the widespread use of relational databases and object oriented programming.

FreeMED is currently hosted by the FreeMED Software Foundation, with downloads hosted by Sourceforge.

It uses Subversion as a Concurrent versioning system, which it has used since it was migrated from CVS in 2005.

Languages
FreeMED is mainly written in PHP, and makes heavy use of SQL, favoring the MySQL database engine. It also uses some bash, Perl, and small pieces written in other languages. Its interface is primarily web-based, but web services interfaces, such as XML-RPC, are also available.

Modular Electronic Medical Record
FreeMED stores and represents its medical data as a group of "modules", which consist of a database model and a user interfaces. Each of the disparate modules are then virtually connected together by means of relational database table fields referencing other modules and basic patient demographics. This allows FreeMED to add and remove core database functionality by adding and removing modules without having to reprogram its interface.

External Billing System (REMITT)
FreeMED uses an external billing program called REMITT (REMITT Electronic Medical Record Information Translation and Transmission). The name "REMITT" is a Recursive acronym. It communicates with REMITT via an authenticated XML-RPC connection. This connection, once established, allows the transmission of medical billing data as a monolithic chunk of XML. This is then processed into a meta-format via XSLT, and finally processed into its final format and transmitted to its ultimate destination.

This methodology allows for multiple formats of output to be generated from the same base data.