Topics:
Book Excerpt: Veterans Health Administration's VistA MUMPS Modernization Pilot
Adapted from "Information Systems Transformation: Architecture-Driven Modernization Case Studies," by William M. Ulrich and Philip Newcomb. To download a .pdf of the full case study, click here.
Veterans Health Administration's VistA MUMPS Modernization Pilot
Abstract
This case study documents technologies, processes, and methods of a 100% automated conversion of the Veterans Health Administration (VHA) Veterans Information System Technical Architecture (VistA) system, written in 2.1 million lines of MUMPS, into Java compatible with the J2EE framework. VistA is the core Electronic Healthcare Recordkeeping (EHR) system for the VHA hospital system, which provides EHR record keeping for more than 4.5 million veterans.
A pilot project, conducted in 2005 under VHA auspices as a sole source contract, converted: (1) the Voluntary Timekeeping System (VTS), a module of VistA into Java; (2) FileMan, the VistA file management system into Java Database Connectivity (JDBC) interfacing with an Oracle 9i Relational Database; and (3) the VistA user interface into a Java Server Pages (JSP) browser user interface using the Microsoft IIS Web server. The pilot conclusively demonstrated the feasibility of a fully automated conversion of MUMPS into Java, achieving a transformation that encompassed nearly all of MUMPS language features. The technical strategy achieved a clear separation between application logic business rules, data handling presentation elements, and Web-enabled front-end/user screens. The project was prematurely ended in 2006 due to funding restrictions associated with the Iraq war after the successful completion of a small pilot for the VHA.
In 2009 all 2.1 million lines of code of MUMPS in OpenVistA, the open source variation of VistA, was converted into Java as a scalability demonstration. The conversion of OpenVistA is available on the Web as a Transformation BlueprintTM, where it serves the open source community as a roadmap toward a future open source EHR system.
Introduction to MUMPS
What is Mumps?
MUMPS, or "M", is the Massachusetts General Hospital Utility MultiProgramming System. It is a procedural, interpreted general-purpose programming language oriented toward database applications.
MUMPS is an important programming language and database system heavily used in medical applications such as patient records and billing. It was developed in the 1960s at Massachusetts General Hospital, a teaching hospital associated with Harvard University in Boston, as a specialized language for medical use that ultimately achieved widespread adoption by the healthcare and financial industries as the MUMPS language during the 1970s and early 1980s. The principal language characteristics that led to its widespread adoption are its flexible data manipulation and interpretive features that allowed non-programmers to code in MUMPS with little to no formal computer science training.
The Problem with Mumps
A typical MUMPS application consists of thousands of files that contain MUMPS code along with a MUMPS database. It is a common practice when programming in MUMPS for a programmer to leave dead code within the files that contain the MUMPS application. In fact, any number of files are typically present that contain nothing but dead code. MUMPS supports this practice by allowing a function to be called by referencing the name of a function within a named file.
Similarly, a MUMPS database is also typically full of dead and irrelevant data. It is a networked collection of strings organized solely by data manipulation functions within the MUMPS application.
MUMPS was designed to be interpreted. A MUMPS application can be extended interpretively by loading code from a MUMPS database that is then executed. It is common practice to build MUMPS code on the fly by assembling parts of the MUMPS source code dynamically.
MUMPS code has a very large expansion ratio when translated into any other language. A typical single line of MUMPS may contain the equivalent of five to seven separate executable statements in any other language. MUMPS is highly cryptic, with terse acronyms that obscure the meaning of the code. MUMPS programmers happily follow this style by naming variables and callable functions cryptically. MUMPS programmers often brag that they can program rings around other languages because of MUMPS' brevity. But the obscurity of the MUMPS code that is produced makes sustainment and maintenance of MUMPS applications an ongoing challenge.
There is a limited supply of MUMPS programmers and a small community of adherents and followers with a shared interest compared with many of the more modern languages such as C, C++, Java, and C#. Programmers trained in modern languages find MUMPS antiquated, peculiar, and very difficult to read and understand.
There are serious sustainment concerns associated with MUMPS. Open-M (MUMPS) software maintenance and ownership costs are steep. The cost of adding on MUMPS package applications is very high. The choice of hardware platforms applications is restricted compared to modern languages. Outdated feature sets and obscure runtime architecture increases support costs.
©2011 Elsevier, Inc. All rights reserved. Printed with permission from Butterworth-Heinemann, a division of Elsevier. Copyright 2011. "Information Systems Transformation: Architecture-Driven Modernization Case Studies," by William M. Ulrich and Philip Newcomb. For more information on this title and other similar books, please visit elsevierdirect.com.




Comments