OpenVista CIS
Screenshots

Patient Summary Clinical Notes Vital Signs Orders Reminders Templates Alerts Patient Select Document Imaging View Images

Release Notes

OpenVista® CIS is a cross platform client application for interfacing with the Veteran Affairs' VistA system (an Electronic Health Record (EHR)) and systems derived from VistA, like OpenVista Server. The emphasis is on replacing the previous Delphi, win32 only client, VA Computerized Patient Record System (CPRS), with a client written in a modern language and with a focus on issues such as i18n, cross-platform support, etc.

Architecture

There are two major components to OpenVista, a client (Medsphere OpenVista CIS, commonly referred to just as CIS, OpenVista CIS, or OpenVista Client) and a middleware component (Medsphere OpenVista Bridge). The Bridge handles doing raw RPC communication with the VistA Broker and provides a SOAP (currently broken) and Binary Remoting interface to the client (the client uses one or the other for a given connection). The Bridge is meant to be run on a server (either one running VistA itself, or a separate machine), while CIS runs on a client machine (any machine with a .NET environment and Gtk# available).

There is another component, currently under development, called OpenVista Vitals. This will be both a stand-alone vitals application, as well as a component of OpenVista CIS when it is completed. Note that this project is *not* completed, and should only be considered a pre-preview of what is to come from the Vitals component.

A small portion of the CIS component is actually broken into a separate executable, PdfConverter.exe. This small utility acts as a remoting server, responsible for converting raw bytes of PDFs into GdkPixbuf bytes. This needs to be done out of process, as poppler (and by extension, poppler-sharp) is licensed under the GPL. The PDFConverter.exe sources, as well as the few shared classes used for remoting, are licensed under a GPL compatible license. We hope in the future that a PDF library with a license less restrictive than the GPL will be available, such that we can increase PDF rendering performance by not having the rendering done out of process.

Requirements

  • .NET Runtime (mono 1.1.x or MS .NET v1.1)
  • Gtk# 2.8 or greater (not required to just run the Bridge component)
    Gtk# for Windows can be found at the OpenVista SourceForge page

Building

OpenVista can be built 3 different ways. Regardless of the build tools used, the following relevant files will be generated:

build/output/cis/icons/*/*.png
build/output/cis/Medsphere.OpenVista.Core.dll
build/output/cis/Medsphere.OpenVista.Shared.dll
build/output/cis/Medsphere.OpenVista.Shared.UI.dll
build/output/cis/Medsphere.OpenVista.ImageConverters.dll
build/output/cis/Medsphere.OpenVista.Proxy.dll
build/output/cis/PdfConverter.exe
build/output/cis/OpenVistaCIS.exe
build/output/cis/Medsphere.OpenVista.Vitals.Shared.dll
build/output/cis/Medsphere.OpenVista.Vitals.ui.dll
build/output/bridge/Bridge.exe
build/output/bridge/Medsphere.OpenVista.Shared.dll

1) make - The usual process is all it takes:

./configure && make

2) MonoDevelop -

* See the note below about building with newer automake versions.

There are two options. Using the monodevelop command line tool:

mdtool build

Or from the MonoDevelop UI:

Open ./OpenVista.mds

3) Visual Studio .NET -

* See the note below about building with newer automake versions.

Note: The following steps are annoying and repetitive, but unfortunately we have been unable to find a way to perform then during our automatic solution/project generation step.

Initial setup:

From VS .NET, Open ./OpenVista.sln. Right click the OpenVista solution and select Properties. Click "Startup Project" from the left tree view. Click the "Multiple Startup Projects" radio button, and then change the action for the Bridge and OpenVistaCIS projects to be "Start". Next, click the "Configuration Properties" item from the left tree view. Check the boxes next to every sub-project to indicate the project should be built. Click Ok.

Bridge build setup:

The final piece is to do some configuration tweaks to the Bridge project, which requires the most hand holding to get building with VS .NET. Right click the "Bridge" project note from the Solution Explorer, and select Properties. Click Configuration Properties -> Debugging from the left tree view. Under Start Options, set the Command Line Arguments property to include the right --vista-host and --vista-port parameters as discussed in the *Running* section of this README. Click Ok.

Next, open the References node of the Bridge project in the Solution Explorer, right click the broken reference to the Mono.Security assembly, and click Remove. Right click the same References node, and click Add Reference. In the Add Reference dialog, click Browse... and location and select your copy of Mono.Security (as found in the bridge binary zips, or from your nearest Linux install). Click Ok to add the reference.

We're almost there. Finally, right click the Bridge project again, and select Add -> Add Existing Item... Select "date/web.config.in" and click Open.

Building:

You should finally be able to build the solution by clicking Build -> Build Solution.

* Issues with project file generation and newer automake releases:

Newer versions of automake have caused the make target order when multiple "all" targets are found to *change*, which broke the OpenVista.mds and OpenVista.sln file generation. In order to resolve this until a proper fix is found, the following steps must be taken after building with "./configure && make":

$ rm OpenVista.sln OpenVista.mds .solution.tmp.xml
$ make OpenVista.sln OpenVista.mds

At that point, you can open the solution files in either VS .NET or MonoDevelop.

Running the Bridge

Running on Linux:

Change directories into build/output/bridge. Start the bridge with:

mono Bridge.exe --vista-host foo --vista-port 9999

Note that "foo" and "9999" should be the hostname/IP and port (respectively) where a VistA TCP broker is listening.

Running on Windows:

Right click Bridge.exe, and click Create Shortcut. Right click the created shortcut, and click Properties. In the Target field, append '--vista-host foo --vista-port 9999' (substituting the hostname/IP and port to point to a VistA TCP broker.).

Double click the shortcut to run the bridge.

Running the CIS client

Running on Linux:

Change directories into build/output/cis. Start CIS with:

mono OpenVistaCIS.exe

Under Options, enter the hostname the bridge is running on, and put a port of either 7979 (Binary Remoting, preferred) or 8080 (SOAP, broken currently).

Enter a access and verify code, and click Connect.

Running on Windows:

Double click OpenVistaCIS.exe

Licensing

The licensing for the various pieces of OpenVista CIS and OpenVista Bridge are complicated. The details of all the pieces are laid out below.

src/Medsphere.OpenVista.Core/*:
src/Medsphere.OpenVista.Shared/*:
src/Medsphere.OpenVista.Proxy/*:
src/Medsphere.OpenVista.Shared.UI/*:
src/Medsphere.OpenVista.Vitals.Sharedj/*:
src/Medsphere.OpenVista.Vitas.UI/*:
src/OpenVistaCIS/*:
src/OpenVistaVitals/*:

These constitute the majority of the sources, and are all licensed under the MSPL v1.0, which is roughly based on the MPL + attribution clauses.

src/Bridge/src/web-server/*:

These are MIT/X11 files imported from the source of XSP, which is a project by the Mono team at Novell. The upstream sources can be found on their SVN server at http://svn.myrealbox.com/viewcvs/trunk/xsp/.

src/Bridge/src/*:

All the other bridge files are released under the MSPL v1.0.

src/Medsphere.OpenVista.ImageConverters/*:

These are dual licensed under the GPLv2/MSPL, as they are used to interface between the GPL PdfConverter and the MSPL OpenVistaCIS.

src/PdfConverter/*:

These are purely GPL, as they link to the GPL poppler-sharp (which links to the GPL poppler)

Download

The source and compiled binary of the OpenVista v0.9 release can be downloaded from the OpenVista SF.net project.