WorldVistA

From OLPC
Revision as of 15:42, 11 February 2008 by Drew.einhorn (talk | contribs)
Jump to: navigation, search
  This page is part of the OLPC Health Project. Hardware | Software | Content | Health Jam
XO Caudecus

WorldVistA

This is about implementing the WorldVistA software for the OLPC. Most common situation will have the back end running on an XS, with clients running on XO laptops. OLPC is also considering OpenMRS and OpenEHR for this function. I do not know enough about these packages to comment upon them.

WorldVistA is a nonprofit formed to extend and collaboratively improve the VistA electronic health record and health information system for use outside of its original setting. The system was originally developed by the U.S. Department of Veterans Affairs (VA) for use in its veterans hospitals, outpatient clinics, and nursing homes.

Note: there is some confusion between WorldVistA the organization, and the version of the VistA software distributed by WorldVistA. NEED to go through these wiki pages and clarify the distinction.

Need to keep this page at a level appropriate for folks from the library list interested Library -> Health -> Software. NEED to move material appropriate for the develop list to a separate page.

Questions/Comments? Email Drew dot Einhorn at gmail dot com. or just edit the Wiki.

VistA

VistA is the (Veterans Health Information Systems and Technology Architecture) used to run:

  • US Veterans Administration Hospitals and Clinics.
  • the Department of Defense,
  • the Indian Health Service,
  • the government of Mexico,
  • and many, many others

The source code for VistA was released to the public domain by the US government in response to a FOIA Freedom Of Information Act request. FOIA source is available Here.

A number of commercial, non-profit and government organizations have taken this public domain software and turned it into commercial products, or free and open source software.

VistA Monograph

The VistA Monograph paints a picture of VistA at the Veterans Administration as it was in 2005 and planned for 2006. It is a 146 page detailed description of the capabilities of the VistA system and its component modules.

The Table of Contents and Introduction provides a nice 8 page summary.

Beware

Not every thing you see here is available.

  • Some are failed initiatives,
  • some use proprietary commercial components that have been redacted from the FOIA release.
  • Some are idiosyncratic to the way the VA does business and are not useful outside the VA.

But MOST of it is there and is usable. You can see why we say our goal is Billion Dollar Software on a $200 laptop.

At one time there were issues with licensing of the AMA CPT procedure codes. Joseph says this was resolved by negotiation among WorldVistA, the AMA, and the VA.

VistA Monograph Wiki

This is the VistA Monograph in wiki form. We have just begun the process of bringing it up to date.

  • It's an order of magnitude over the size limit some browsers may choke on it.
  • Need to keep the Table of Contents as is, while splitting it up into files < 32 KB
  • Need to clean up
  • While cleaning up there is a danger on introducing errors
  • compare to the .pdf version
  • Need to annotate each section if it is supported in WorldVistA. If not what are the alternatives?
  • Annotate section if you soon NEED to know whether it is supported.
Here is how it was wikied

I started with the .doc file of the VistA Monograph

  • opened it with Open Office
  • saved it as html
  • cleaned it up with Dave Raggett's HTML Tidy
  • converted it to MediaWiki using HTML::WikiConverter.
  • manual editing to clean out a lot of junk html. Need to redo it with a sed script.
  • script to remove excess blank lines.

It's no wonder it has glitches. I'm surprised it came out as well as it did.

Phillip Longman's book

Best Care Anywhere: Why VA Health Care is Better Than Yours by Phillip Longman provides a history of the development of VistA, its effects on the quality of the health care received by the patients, and the social policy debate on US health care in general.

VistA was created by a collaboration between clinicians and IT folks without senior VA management being aware of what was going on. This resulted in a marvelous system that meets the needs of clinicians. Phillip Longman documents the love/hate relationship between the VA's upper management and the VistA software.

VA Management's view of VistA

  • It's not ours!
  • It's old, ugly, obolete!
  • We've tried to replace it, and failed, failed, ...
  • We win awards for it.

VeHU

VeHU, VHA eHealth University training website

Select All Tracks, no Keywords and browse.

The VA removed this valuable site. It is partially back, but it's mostly just stubs. It remains to be seen if it will be fully restored. Join the chorus asking the VA to put it back.

Hardhats

Hardhats is where the folks running VistA outside the VA hang out. There is also a Google Groups based mail list.

VistA Back End Server

The WorldVistA server running on the XO with a 2GB SD card communicating with CPRS (Computerized Patient Record System) running on Windows laptop.

CPRS.JPG

The back end is written in Mumps, we use the open source GT.M implementation.

The WorldVistA server is running on the XO with a 2GB SD card communicating with CPRS (Computerized Patient Record System) running on Windows laptop.

  • Bhaskar said it would be easy.
  • Larry Landis installed GT.M, VistA, and got FileMan running.
  • David Whitten put band aids on the rpc broker.

NEED to get Larry to document installation procedure.

GT.M supports database replication.

VistA Front End Clients

Porting Delphi Clients to XO

The most essential clients are written in Borland Delphi. Others are written in Java and other programming languages.

There are several approaches to porting the Delphi code to the XO.

  • Running under Wine.
  • Translating Delphi to Python.
  • Translate to Lazarus/Free Pascal.
  • Translate to server-side AJAX.

Note: None of these options have been tried nor tested on the XO.

NEED Test Harness to compare response of old Windows based GUI to new replacement on XO.

Wine

The folks porting to Wine say they are almost there. Don't know when it will actually arrive. Don't know if we have the resources to run software in MS Windows emulation on an XO. Nancy is looking at minimum cpu, memory footprints to support CPRS under wine and on real hardware with windows.

DelPy

Our original plan was to create DelPy a Delphi to Python translator. It now looks more likely we will be translating to Lazarus/Free Pascal.

We were looking at using Coco/R an open source tool tool which takes an EBNF grammar with attributes and semantic actions and generates a recursive descent parser and lexical anaylyzer.

Here is a Delphi 6 grammar. It is from a stillborn open source Coco/R project for Delphi. The was a brief flurry of activity in 2002. Nothing has happened since then. There may be copyright/licensing issues since is derived from a BNF grammar published in the Delphi 6 Help file. Stephen is checking his Delphi 6 distribution to see what copyright, license notices are attached. If we use this grammar we will port it to a more modern Coco/R implementation

Here is a Delphi 5 grammar derived from the UCSD Pascal grammar. It is a little farther out of date, and will take a bit more work to put it into the Coco/R tools. The copyright/licensing issues may be easier if we start here.

In the unlikely case that we revive the DelPy project we will use CocoPy a Coco/R implementation in Python by Ron Longo.

Compile with Lazarus/Free Pascal

Not all components in Borland's VCL (Visual Component Library) are available in LCL (Lazarus Component Library). In particular, LCL is missing TFrames and TRichEdit. We will probably discover more gaps that NEED to be filled. We may be able to encourage Larzarus developers to fill thes gaps, or some OLPC developers may have to become Lazarus developers, so we can fill these gaps ourselves.

Here is a chart showing comparing the components available in VCL vs. LCL. We NEED columns indicating components used by VistA front end clients. Don't know how up to date the Delphi and Lazarus columns are.

We may discover issues with the Free Pascal compiler that NEED to be addressed similarly by encouraging or becoming Free Pascal developers.

It may turn out that we will NEED techniques to translate from one Pascal dialect to another similar to the DelPy translator described above. The D6 grammar gets even closer to where we want to start. Hope we can resolve the D6 Help File license issue.

Compile to Server-side AJAX

Only a browser is needed

For some time yet, we need to expect that the existing CPRS (written in Delphi) development will continue, perhaps "forever". So this option is aimed at a "moving target" until it overwhelms the existing efforts.

This idea is very young and the needed analysis has not yet been done to see how feasible it is. If most of the CPRS code is dealing with whacking and diddling "window panes", and has very little logic, then this may be an easier way to advance the state of the CPRS access. Unlike the previous options, there would be an abandonment of the existing CPRS code base (ldl: IMO) since having some automated mechanism to separate the "CPRS" from the "diddling" is probably not feasible.

However (ldl: IMO), once done, the tediousness of maintaining low-level Delphi code is probably overcome by moving the implementation out of "code" and into more of a "specification". (ldl: I doubt that it will ever be an "end user" level activity, but modifying CPRS functionality could and should become a CAC level activity, just like "templates" and other VistA elements).

The Delphi Clients

For each client we NEED

  • programming language,
  • number of lines of code,
  • primary source FOIA?, other,
  • supported?,
    • if not alternatives.
  • links to detailed description (VistA Monograph?),
  • documentation
CPRS Computerized Patient Record System

The CPRS page from the VistA Monograph wiki.

The CPRS Demo from the Veterans Administration.

We are starting from Kevin's alpha version with added internationalization, or maybe the CCHIT version, or ...

Mental Health Assistant

The Mental Health page from the VistA Monograph wiki.

What's the difference between version 2 and 3 of Mental Health Assistant?

Query Tool
GUI NOIS

Stephen says: "I wouldn't bother with the GUI NOIS. It was a bug/error/help reporting system the VA used. They have moved on to a COTS Remedy."

ldl says: VistA folks are very interested in "eating our own dog food", and since Remedy is "commercial licensed software", and hence cost many dollars... Go that way if you want to. NOIS is already running "outside the VA" and "global access" tothe implementation outside of the VA is intended.

VistA Imaging

There are missing pieces of VistA Imaging due to licensing issues.

O3-DPACS an open source medical imaging system from the O3 Consortium based in Italy has been used in VistA Imaging's place.

RPC Broker
FileMan components
BCMA Bar Code Medication Administration
PCMM Primary Care Management Module
Vitals
VistA Imaging
Clinical Case Registries
And Others

Rich V provided most of the above and finished with:

"There may be others, but I'm blanking after that list".

WorldVistA Software

I takes a lot of work to implement a working VistA system. It is possible, many organizations have done it. It's hard to recreate the necessary development environment used by the VA. Portions of the software were redacted because of ownership licensing issues.

WorldVistA has implemented and ditributed a GPL V2 version of the software that works and has obtained CCHIT certification. WorldVistA is debating whether to change the licensing to GPL V3. Most of the source code remains unmodified from the public domain FOIA release. There may be some LGPL in the mix. We probably NEED to have somebody go through all our source (once we get the OLPC Project Hosting Application approved) and check the provenance of each file, adding/checking copyright and license headers as appropriate.

WorldVistA runs on the open source GT.M version of Mumps, as well as the proprietary Cache version.

Download it here.

NEED a paragraph or so about each file.

Test and Demo Data

We NEED good test and demo data.

Valerie's medical curriculum with sample medical records.

Decision Support System

Emory Fry's Socratic Grid Project is an interesting open source Decision Support System at the recent WorldVistA Community Meeting.

Other folks presented using Clinical Reminders instead. NEED to find link to their presentation.

3rd World Medicine

NEED to understand the differences. Will we need to tweak VistA? Ask Joseph.

Roles

Obviously some roles are performed by many people and some people perform many roles.

Here we are listing the various roles and the skill sets, tools, and tasks associated with each role.

See: OBX and Babel for ideas on icons representing skill sets

Developer - Translators

  • Coco/R
  • CocoPy
  • Delphi grammars
    • D6 Borland Help File Based
    • D5 USSD Pascal Based
  • Translators
    • DelPy Delphi -> Python
    • Delphi -> Lazarus

Developer - Lazarus/Free Pascal

  • Analyze WorldVistA client source.
  • Identify required components
    • TFrames
    • TRichEdit
    • ...
  • patch Free Pascal compile if necessary
  • Develop missing LCL components

Sysadmin

Medical information systems must have appropriate levels of administrative support. Backups must be regularly performed. And there must be periodic tests to make sure the recoveries can be performed. We cannot lose a country or region's medical records!!!

Best Practices

The OLPC computers XO and XS will be deployed in large numbers. It simply is not possible to have system administrators monitoring and maintaining each one. The normal administrative process will have to be automated. With reports flowing back to a centralized (Regional) management team. It will be difficult to make sure this scale well and the regional staff is not overwhelmed

A VistA based system requires several types system administrators with different skill sets:

  • Unix
  • GT.M
  • VistA
  • CAC (Clinical Application Coordinator)

licensing clerk

Paralegal examines each source file checks provenance, and licenses adds any necessary notices

License Policy

Ponders mysteries like is MSPL an acceptable license for a piece of software we want to use.

Privacy Policy

Approves anonymization of real medical data (with patient permission) for used for

  • demonstration
  • medical curriculum
  • software testing

Note: Privacy laws vary by country. Don't know what rules and regualations would apply to an OLPC based medical records system.

Releasing anonymized medical records can be a bureaucratically intense process with IRBs Institutional Review Boards, etc.

Medical records on the mesh raises interesting privacy problems that need to be addressed.