What is VistA Really
VistA is a Electronic Health Record programmed by Federal (US) employees working for the Department of Veterans Affairs (previously Veterans Administration) for several decades, since the late 1970s. 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.
But what is exciting about that? What is VistA really? Why do people have such strong feelings about it? This is the WorldVistA wiki, and we tend to fans of VistA, so here is the page that give some insight to what is great about VistA.
Contents
Licensing of FOIA VistA
It is a common mis-conception 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 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 [GPL]. The GPL is a "keep-it-free" license that prevents proprietarization. Some proprietary VistA vendors favor other licenses that allow for proprietarization.
What do you mean by...
The first barrier to really understanding VistA is one of overlapping vocabularies. Often people who are technically savvy have a more difficult time with this than those with less technological experience. This problem is directly related to the age of VistA. VistA developed in parallel with many technologies that we take for granted. Often names for technologies in VistA overlap with the names for more common technologies and give tremendous headaches to new VistA developers.
RPC is a good example. When most people say RPC that are referring to a common *nix messaging system. This standard meaning of RPC is based on the same idea as the VistA RPC mechanism, but otherwise bears no resemblance. CPRS connects to VistA using the VistA RPC methods, so it is an important part of the VistA technology model, but its name often causes confusion with those familiar with the more common meaning of RPC.
There are two things that you can do to avoid being confused, first, do not assume that you know what a "VistA person" means when they use these technological terms, and read the Confusing Terms section of this website.
Your programming language is named after a disease?
VistA is written in MUMPS. There are several facts about MUMPS that often confond first time programmers.
- MUMPS is not a C-based syntax, as most modern programming languages are so often. 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 originall) You must be careful where you indent which will really bother you if you like python (which forces indentation using spaces instead of using periods as MUMPS does)
- MUMPS is its own database, but its not SQL. Its 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 (those are called locals in MUMPS).
- MUMPS often behaves like an operating system. Due to space limitations, some original implementations of MUMPS were the operating systems on the machine, and this legacy still influences the behaviour 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 the number of programmers for the market segment is definitely disproportional.
- 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.
- Because they are rare, MUMPS progammers are often expensive
MUMPS is too often written off as an obscure language and thus 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, 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.
Note: insert VistA architecture diagram here.
Many people unjustly dismiss terminal applications. GUIs make learning programs faster, 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 often 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, where as text applications are highly predictable about where the same information is displayed.
People who only rarely use a program have to figure out how to use it from scratch every time they use the program. For these people, a GUI is the best program system, because they have to use their general knowledge about computer systems every time they use the program, and figure out how to use the program anew every time.
Often clinicians need graphical displays that are not possible in terminal applications, such as 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 GUI for VistA. It takes a small percentage of the underlying VistA functionality and presents it in a graphical fashion. CPRS is often criticised by recent programmers for being "long in the tooth" (that means too old for you Yankees). It is written in Delphi which is no longer as a popular programming language as it was in the mid 1990s. Like the rest of VistA, CPRS was written when computers were much slower, and as a result CPRS is comparitively very light-weight. While the community is seeking a Compelling CPRS Replacement CPRS itself continues to run on computers that are too old to run any commonly deployed proprietary EHR systems.