CHC Corner

From VistApedia
Revision as of 15:21, 20 September 2005 by 152.131.9.69 (talk)
Jump to: navigation, search
From: Matthew King <mking@clinicaadelante.com>

The Community Health Centers in AZ are forming the Arizona Integrated 
Network (AIN) to formally integrate information technology services, 
financial management, and clinical initiatives. We are have included 
VistA Office in our EHR evaluation.
From: John Leo Zimmer <jlzimmer@cbchc.com>

The Council Bluffs Community Health Center is assembling the hardware
and software to implement VistA Office or FOIA VistA in this one small
center. We hope to participate in an open development process that tailors
VistA to community health centers' special needs.

From: Hardhats Listserve:

Here are some recurrent questions us nontechies have about VistA:

1) Is Mumps a serious limitation to complete EHR functionality, code maintainence, HL7, or PMS interfacing?

     There are several major commercial EHRs that use MUMPS.  In fact, 
     the language was developed expressly FOR the health care 
     environment. There are far more limitations (and serious ones at 
     that) in most other languages and especially strict SQL

     Absolutely not.  I will go one step further than Cameron.
     I have heard that M is the #1 language used for EHR's. 
     Epicare, which just contracted for EHR for Kaiser, is based 
     on M, for example.

[Rick Marshall]] replies:

How many completely functional EHRs can you name that are not written in MUMPS, whose functionality even comes close to VistA's? As far as I know, MUMPS is the only programming system designed specifically for medical systems development. Standard MUMPS cannot be used to generate sophisticated graphical interfaces, but it can be used to communicate with programming languages that do. No language does all things, nor should, nor can. Programming requires mastery of multiple languages, and the core language must be carefully chosen. The best reason for using Standard MUMPS as VistA's core language is that it is decades too late to do anything else. VistA is already written in Standard MUMPS, and it took twenty-eight years to get this far. Replacing Standard MUMPS at this point is an irresponsible waste of resources that could instead be used to easily extend VistA to save lives. It is like arguing that brick is passe, so we should shut down New York City for fifty years so we can remove all the brick and replace it with something more popular. Replacing Standard MUMPS to improve code maintenance (for example) is like replacing my DNA so I can learn to play the flute--unnecessary and irrelevant. Standard MUMPS is VistA's DNA.

Honestly, though, why does anyone who is not a programmer care what it was written in? What is Mac OS X written in? How about Microsoft Word? Google? Quicken? The Sims? Do you feel competent to evaluate which programming language is ideal for a given problem domain? After twenty-one years of programming practice and study, I do not know beyond my chosen field of medical software. I certainly do not feel competent to choose among surgical instruments. I could spend time trying to teach nontechnical people how to evaluate programming systems enough to understand why VistA had to be written in Standard MUMPS (something even most programmers evidently do not understand), or they could spend a fraction of that time teaching me what they need VistA to do for them. If I can get VistA to do all those things for them, then in the end who cares what language it is written in?


2) What is the fundamental difference between a relational database and a hierarchical database and how does that effect the end-user? (Should we even care? If so why?)

    While MUMPS has been characterized as "hierarchical", the 
    DBMS that VistA uses, VA FileMan, provides what is more accurately 
    characterized as a polymorphic view of the database.  One can 
    readily use relational projections (indeed there are commercial
    add-ons that give a strict SQL view of the database).  The more
    advantageous view through VA FileMan is more like an object view
    of the data with abstract data types being highly specialized for
    optimal use and performance.  End users usually need not care 
   (except that performance of VA FileMan is demonstrably superior 
   (there are published reports) to SQL on the same hardware and
    configuration.)

    Another difference is the way the data is stored.  M data is stored
    in b-trees, as compared to flat tables (I believe).  This leads to
    faster data acess, and less CPU power needed.

    Also, the database in M is called by some a "sparce array."  This
    means that there are no "blank spaces" left for data to be later
    filled into.  So with M, if there is no data present, then no space
    is wasted.  I find this to lead to many many fields being defined 
    for a given file.  With a traditional database, having all these 
    fields with empty/wasted space, would lead to huge database files.
    But with M, one can can store years of patient information on a 
    relatively small disk.

3) How hard is it for non-Mumps IT personnel to learn Mumps/VistA and are there enough experienced VistA programmers (or former VistA programmers) to consult or be hired to non-VA projects?

     Learning MUMPS is as simple as learning BASIC.  Learning about all
     the utilities and capabilities of the common services in VistA is
     a years long process.  And learning the functionality and setup 
     for the clinical and administrative functions in VistA would
     probably take several life-times. Are there enough experienced 
     programmers and application consultants?  So far I believe you'll
     currently pay more for a Java programmer.

     I am a physician and have taught myself M.  It is a very simple
     language.  I consider it to be a scripting language.  But it gets
     the job done, and has run hospitals safely for decades.

     There are many people on the list that would like work as 
     programmers, so I don't think there will be any limitation there.
     And when CMS releases VistAOffice, there should be even more 
     interest and consultants available.

Rick Marshall replies:

It is easy to learn Standard MUMPS, but impossible to master VistA. Like the art of medicine itself, VistA is complex beyond human comprehension--no, I am not kidding or exaggerating--and no one person will ever know it all anymore. I have been programming with VistA for twenty-one years; there are a couple areas of the code I know better than anyone, several I know as well as the other experts, and a dozen or so I know reasonably well--out of 80-120 software packages, depending on where you draw the lines. Most of VistA I know by its patterns and common structures, and maybe a few basic architectural features per package, but for most of VistA I am the wrong person to go to. There are whole packages I know only by name, whose purpose I can only guess at. So it is with all the VistA gurus. None of us pretends to know it all or even most of it. We work together as a community, sharing out the vast scope of work that is VistA among ourselves.

To address your central concern, our tradition is to grow our own new Standard MUMPS and VistA programmers from among its users, because we have discovered it is far easier to teach a nurse to program than to teach a programmer to practice medicine; the nurse has already mastered the difficult part. It takes mere minutes to start writing Standard MUMPS code, as with any programming system worth discussing, but a day or two to introduce the basics, a week or two to introduce them fully, and a month or two to become fully comfortable with the programming system. It takes experienced programmers longer to learn Standard MUMPS, because it is not like most other programming systems, and they spend years whining about it instead of buckling down and coming to grips with it on its own terms. Learning Standard MUMPS is like taking small steps over very deep crevices; it is easy but unnerving for some.

Learning to program with VistA takes longer, and should happen in two phases. First the programmer needs to learn our programming standards and conventions and common calls. Then the programmer needs to pick a package and focus on it for a long time, moving from simple assignments to more complex ones. It is best if the student began as a user of that package, then graduated to being an application coordinator (a kind of super-user) for it, before learning to program with it. Becoming an expert user of any reasonably sophisticated VistA package takes years. Once an application coordinator starts training to become an information manager, starts working on supporting and extending a package at a site, every year they keep at it improves their skills with the package measurably. Those who have worked with a package for ten years or more are easy to tell apart from those who have only been doing it a few years.

There is a lot more I could tell you about the expertise lifecycle, how it is structured, where to find VistA experts and how to grow your own, but I am trying to keep this postscript "short."

4) What other concerns should we have regarding adopting VistA?

     Expect a long learning curve.  Get help.

     I think a factor here is how much you want to put into the system.
     It is not turn key at this point, although there are installers
     who can do the work for you.  It is not going to have all the 
     bells and whistles that commercial EMR's want you to pay for. 
     It is not currently integrated with a billing system or a system
     for appointments.

     Matthew King adds: 
     On the other hand, a lot of the bell and whistles that seem to
     exist in many commercial products are actually rudimentary or even
     vaporware. VistA isn't as pretty, but is very functional, with 
     easily modified clinical and preventive care reminders,support for
     disease management, advanced drug interaction checks and lexion
     support. The CPRS module supports drag and drop template building.
     This makes custom templates a snap, something you pay dearly for
     in many commerical products. The experts say 1/3 of medical errors
     can be reduced by intelligent software design. Since the VA 
     product exists for patients, not profits, it is designed for 
     clinical functionality and patient safety, so that is where it
     shines. Most commercial products have recently added EHRs as an
     afterthought in an emerging market. The bells and whistles look
     slick, but don't necessarily add to patient safety.

Rick Marshall replies: Above all, it is a serious commitment. It is free as in freedom, not free beer. It will save lives, not time. You cannot do this alone; you may think you can, but sooner or later you will run aground without help. To succeed with VistA you need the community in ways you cannot imagine, but the good news is they will welcome and help you, and it will not be long before you can return the favor. The big hurdle with VistA is that anyone used to making medical informatics decisions has learned how to prepare for defeat, to choose vendors on the basis of how deep their pockets are (so you can sue them when the project collapses in failure) instead of on the basis of their expertise and customer service, to choose based on marketing flair and reputation. VistA is the real deal, and for that very reason may be difficult to recognize as such by customers who have learned only how to choose among flashy failures. VistA requires the "customer" to become a partner, a collaborator, words that have all but lost their meaning in the modern marketplace; when you become fully engaged with the VistA lifecycle, you will come to understand that if VistA is broken it is your fault as much as ours, that it is your responsibility to hold the developers and the software to a high enough standard to meet your needs. Unlike with most commercial software products, you will rewarded instead of punished for engaging in the critique, review, and even development of VistA.

There is an endless amount to learn about it, and it is under continuous development, continuously patched, continuously changing, as it must be. The static details of VistA are less important than the living process by which its users drive development through their continuous stream of suggestions and complaints. You will not and cannot appreciate how true that is until after you have been involved with VistA for years. The secret to its success is no secret, not specific features, nor the technology used. It is the dynamic, hyperactive software lifecycle that engages the creativity of tens of thousands of users to mold the software over and over so that the longer you wait the better it gets, as opposed to most software which is static by design, updated at best occasionally, and obsolesces with time.

That inversion of the norm, emphasizing change instead of stasis, is a repudiation of the core beliefs of the software industry and much of academia, and as such you must expect to hear an endless stream of irrelevant complaints lodged against VistA, usually by those who have not used it. From those who do use VistA, you will generally find an endless stream of relevant complaints together with strong loyalty. Like any experienced VistA professional, I can and will criticize VistA up one side and down the other for hours on end. We like it in part because we know its faults, and so we try to prioritize the work most important to us; when the lifecycle is healthy, if something is broken it's because we think it's more important for the developers to work on something else first. Those who fully engage in the VistA lifecycle know VistA's flaws far more intimately than its critics, but they know its strengths, too, and they can point to features in the software that they personally first brought to the attention of the VistA development community. In a way most software will never be, VistA really does belong to its users, and they know it.

So when I echo other writers in saying VistA is free as in freedom, I mean as in the responsibility that comes with true freedom, the expectation to interact with it as an adult, taking responsibility for what we need from it, and helping to chart our own future. To be blunt, many people do not want that, prefer the simplicity of having limited choices imposed upon them by someone more powerful, to recreate the false security of childhood. Others do not mind the responsibility, but cannot spare the time to learn a fully featured medical informatics system, not even just the few parts of the few packages they would use in their medical roles. In general, we find the truth about VistA properly screens our potential clients; the right people respond well to the challenge and possibilities of VistA, and enrich the community and its software when they engage with us.

PPS: If I sound opinionated in the above, it is because experience has made me so. For the first half of my career with VistA, I thought it was probably nothing special, that every hospital system must have something comparable. My disgust with the state of the art and appreciation for VistA has accumulated over the years through a series of disillusioning exposures to how most medical software works--or doesn't. I do not know if there is even one feature in VistA that it does better than any other system, but no other system seems to be able to combine them all into such an integrated architecture driven by such a potentially responsive software lifecycle. The experience of patients in New Orleans in the wake of Hurricane Katrina would seem to be the latest dramatic illustration. I have gradually arrived at the surprising conclusion that my friends and I are working on something unusually cool. Who knew?