What is VistA Really

From VistApedia
Revision as of 04:06, 1 February 2010 by Perspectoff (talk | contribs) (Your programming language is named after a disease?)
Jump to: navigation, search

VistA is an Electronic Health Record programmed by federal (US) employees working for the Department of Veterans Affairs (previously the Veterans Administration) for several decades. Because it was developed by federal employees, it is available under a Freedom of Information Act (FOIA) request. (The version of VistA available directly from the US Government is usually referred to as FOIA VistA.)

A Cloudy History

The history of VistA available from Hardhats.org indicates that VistA development began in the late 1970's. VA documents, such as the VistA Monograph, date the start of VistA to the mid 1980's. Why the discrepancy? In short, the version at Hardhats is the real version. It documents how VistA moved from an underground movement to a celebrated system.

VistA (and the vision that led to it) was a programmer-led counter-culture within the VA. Programmers and administrators often risked their jobs (and some lost them) in order to develop a system that would satisfy clinical needs at local hospitals. Each programmer was primarily interested in the needs of the clinical users who worked at the same local VA hospital that the programmer worked at. Nevertheless, they desired that the software they created would be able to be used throughout the VA system.

The software platform that eventually resulted was unique because it represented a combination of modules developed by a distributed team. The method of the creation of VistA was, therefore, a precursor to the distributed "open source" development style now popular today. [The best description of this style of distributed development is in a paper called "The Cathedral and the Bazaar" by Eric Raymond.]

Even the original name reflected the nature of its development: Decentralized Hospital Computer Program (DHCP). (The name "VistA" was not chosen until much later.)

The VA officially dates "VistA" from the time they approved the software, of course, but, it was using the VistA software (in some of its hospitals) long before it was officially approved.

The VA bureaucracy is primarily concerned (as it should be) with the care of veterans. As one can imagine, this is a highly political issue with tremendous pressure from Washington. Enlightenment with regard to the development of VistA is largely independent of bureaucratic ability. When the VA is lead by VistA-enlightened leadership, VistA tends to thrive and move forward. When the VA is led by those ignorant of VistA and software generally, VistA tends to stagnate.

The tension between those who actually make VistA work well (the VistA programmers, ADPACs, and CACs) and the bureaucracy that is in charge of the VA resources still exists. In many ways the purpose of WorldVistA is to ease this tension. WorldVistA is intended to be a neutral meeting place that can include VA programmers and VA bureaucrats that is external to the VA.

The common theme in the WorldVistA community is the interest in VistA and making the software better.

Licensing of FOIA VistA

Despite the way in which VistA was developed, there is a common misconception that VistA is "open source" software. Technically, VistA is in the public domain. As a result VistA can legally be the basis of both proprietary software and "free and open source" software. FOIA VistA does meet the strict definition of "free software".

The fact that VistA can be proprietary software AND free software creates an ongoing tension between different portions of the VistA community. For instance WorldVistA has a policy of releasing software under the General Public License (GPL). The GPL is a "keep-it-free" license that prevents someone from controlling the software and making it unavailable to others. However, some VistA vendors favor licenses (such as the LGPL), that allow for add-on modules to be used in proprietary packages.

What do you mean by...

A barrier to understanding VistA is often one of overlapping vocabularies. Paradoxically, people who are technically savvy may have a more difficult time with the vocabulary than those with less IT experience. This is because VistA was developed in parallel with many technologies that today we take for granted. Names for technologies in the time-honored VistA lexicon may overlap with names of more recent technologies (causing a degree of confusion for new VistA developers).

"RPC" is a good example. When people outside the VistA Community refer to RPC, they usually are referring to a somewhat ubiquitous *nix messaging system. VistA developers and users, in contrast, may speak of the the VistA RPC, a method of connecting CPRS clients to a VistA server. While the more recent RPC is based on the same basic idea as the VistA RPC, on closer inspection they do not bear much resemblance to each other.

Here are some other Confusing Terms.

Your programming language is named after a disease?

VistA is written in MUMPS. There are several characteristics of MUMPS that can confound first-time programmers.

  • MUMPS is not a C-based syntax, as most modern programming languages are. This means that MUMPS code looks strange to outsiders.
  • MUMPS is not white space invariant. This means that you must pay attention to where you put spaces. Many modern program languages allow you to freely put in spaces at any point (following FORTRAN rules originally) With MUMPS you must be careful where you indent using spaces. Putting multiple spaces in some places is not allowed at all, which will really bother you if you like python (which forces indentation as part of the syntax instead of using periods as MUMPS does)
  • MUMPS is its own database, but its database is not SQL. It's a Hierarchical Database that is ideally suited to healthcare
  • Globals (variables) means something in the permanent database, ie: global across all processes in the system, not the typical programming meaning of global across all the subparts of a single program (variables that are shared within all parts of a single program are called locals in MUMPS).
  • MUMPS often behaves like an operating system. Due to space limitations, some original implementations of MUMPS actually were the operating systems on the machine, and this legacy still influences the behavior of MUMPS.

Business people might be a little jarred by some of the business implications of MUMPS.

  • There are very very few qualified MUMPS programmers, compared to the much larger number of programmers in mainstream languages. There are more MUMPS people than SNOBOL or many of other programming languages of the same generation, but for the market segment the number of programmers is definitely disproportional. Just because MUMPS is commonly used in healthcare does not mean that it is easy to find non-healthcare programmers who use MUMPS.
  • It takes a competent computer scientist much longer to learn MUMPS than other languages because MUMPS maintains backward compatibility to ideas that modern computer scientists don't see except in assembly language programming, such as the GOTO command or line tags.
  • Because they are rare, MUMPS programmers are often expensive

MUMPS is too often written off as an obscure language having little or no value. Here are some of the really good things about MUMPS

  • Excellent string handling
  • The database is really really good, especially for healthcare
  • It is unbelievably fast, as it was designed to run on ancient hardware, so it flies on modern hardware.

VistA is a text based (command line) system. CPRS is only the GUI.

Many many people who have used VistA think that CPRS is VistA. Most of VistA is what is known as "roll and scroll" or a terminal application. VistA was designed long before monitors where capable of complex graphics displays. Old monitors that only displayed text were called terminals. Modern computers use Terminal Emulators which allow modern computers to interface with applications as though they were terminals.

Much of VistA is only available on terminals. CPRS is a GUI client written in Borland's Delphi (Pascal) that uses VistA-RPC calls to connect to VistA. Most of the underlying architecture of VistA will not be discussed here, but it is important to clarify that CPRS is only part of what VistA has to offer.

Many people unjustly dismiss terminal applications. GUIs make learning programs faster, but terminals make using programs faster. Once the initial learning curve is overcome, terminals offer faster data entry and better response times than most modern GUI applications. When given the choice, experienced users often prefer the terminal, and lose productivity when forced to use GUIs. Some of this is because Graphical interfaces use both a mouse and a keyboard, and some of this is because GUIs can change the location of information on the screen, whereas text applications are highly predictable about where they display information.

People who only rarely use a program have to figure out how to use it from scratch every time. For them a GUI is the best program system, because they can use their general knowledge about computer systems to figure out how to use the program anew.

Often clinicians need graphical displays that are not possible in terminal applications, such as for graphing results or seeing trends. CPRS is intended to perform most of the common clinical functions in a GUI environment.

What is CPRS?

CPRS is the dominant GUI for VistA. It takes a small percentage of the underlying VistA functionality and presents it in a graphical fashion. CPRS focuses on those activities that are most frequently used by clinicians. Often those without direct patient contact, such as pharmacists, do not have a GUI based interface, and must use the traditional roll-and-scroll terminal interface. Since so many clinicians are trained with CPRS, and because they often use only this interface, many clinicians assume that CPRS is VistA.

This is not entirely a bad thing. CPRS provides a very well-thought-out approach to the underlying VistA capabilities. It is relatively easy to use, given its complexity and depth. A quick look at the Google Scholar search for "VistA" and "CPRS" reveals that CPRS is one of the most studied EHR interfaces available.

CPRS is also very, very customizable. In the VA the Clinical Application Coordinator (CAC) is essentially responsible for the care and "feeding" of CPRS. A competent CAC is capable of tuning CPRS in numerous ways to the preferences of departments, floors, or even individual clinicians. The CPRS menu is also capable of linking to other programs, so that clinical programs that are actually separate applications can appear to be a part of CPRS.

CPRS is often criticized by recent programmers for being "long in the tooth" (too old). It is written in Delphi, which is no longer as popular a programming language as it was in the mid 1980s. Like the rest of VistA, CPRS was written when computers were much slower, and as a result CPRS is comparatively lightweight. While the IT community might be seeking a compelling CPRS replacement, CPRS itself continues to run on computers that are too old to run any commonly deployed proprietary EHR systems.

Contact the Editor

This page was originally written and is currently edited by Fred Trotter. If you have comments or suggestions about the contents of the article please contact Fred Trotter directly.