OpenVista CIS

OpenVista Clinical Information System (CIS) is a cross platform application based on C# and Gtk# / GTK. CIS runs on the MS and Mono .NET frameworks. It is based on the design of the VA's Computerized Patient Record System (CPRS) along with image viewing, and other commercial enhancements. CIS will be Medsphere's technical platform for our new pharmacy and nursing modules.

Quick Links

Recent Blog Posts

One of the features of OpenVista CIS is that it is extensible. Without modifying the core of CIS, you can drop in additional functionality, such as new application tabs, new image format rendering support, new preferences tabs, etc.

 

In order to make OpenVista CIS extensible, it uses Mono.Addins for a plugin system. This allows developers to dynamically add more functionality to CIS without having to change its internals. Mono.Addins allows developers to specify "extension points" and then inspect and load all extensions that attach to that extension point. Here is a simple example showing one of the CIS extension points, and a simple extension that implements it.

The Extension Point

Let's look at one of the core UI extension points in CIS, the IApplicationTab. This extension point is used to provide tabs visible in the main window of CIS. Here is the relevant code from the definition of that extension point interface:

using Gtk;

[Mono.Addins.TypeExtensionPoint ("/Interface/ApplicationTab")]
public interface IApplicationTab
{
     Widget LabelWidget {
         get;
     }
     Widget Widget {
          get;
     }
     .
     .
     .
}

 

This extension node is found in the Medsphere.OpenVista.Core.UI.dll assembly, and must define an "AddinRoot" in order to let this extension point be used. The following is from the AssemblyInfo.cs file in that assembly:

using Mono.Addins;

[assembly:AddinRoot ("Medsphere.OpenVista.Core.UI", "1.0")]

A Simple Extension

 

We are going to create a new assembly that contains our application tab extension. We need to specify both our addins dependencies, as well as advertise it the addin itself, in the AssemblyInfo.cs file:

using Mono.Addins;

[assembly: Addin]
[assembly: AddinDependency ("Medsphere.OpenVista.Core.UI", "1.0")]

 

Next we will define our simple hello world extension in HelloWorldSheet.cs:

using System;
using Gtk;
using Medsphere.OpenVista.Core.UI;

[Mono.Addins.Extension ("/Interface/ApplicationTab")]
public class HelloWorldSheet : IApplicationTab
{
        public Widget LabelWidget {
                 get { return _label; }
        }

        public Widget Widget {
                 get { return _widget; }
        }
        .
        .
        .
        public HelloWorldSheet ()
        {
                 _label = new Label ("Hello\nWorld");
                 _widget = new Label ("Hello World!");
        }

        Label _label, _widget;
}

We can now compile our addin with the following command line (of course, this could just as easily be done in Visual Studio, MonoDevelop, etc):

gmcs -r:Mono.Addins.dll -r:Medsphere.OpenVista.Core.UI.dll -pkg:gtk-sharp-2.0 \
     -t:library -out:Medsphere.OpenVista.CIS.Demo.dll HelloWorldSheet.cs AssemblyInfo.cs

 

Now when we run CIS, we see that our hello world application tab has been automatically loaded:

 

openvista-cis-hello-world-plugin.png

 

Conclussion

 

For further reading on Mono.Addins, check out the Mono.Addins page on http://www.mono-project.com/. If you want to get started on extending CIS, grab the CIS source code! The full source code for the simple CIS tab plugin is attached to this document, so you can see the full details.

0 Comments 0 References Permalink

This instructions are the same instructions that are in the INSTALL file in our releases.

 

Download the latest release for OpenVistaCIS from http://medsphere.org/download/project/openvista-cis

 

Unzip it.

 

From VS .NET 2005, open the file OpenVista2k5.sln contained in the top level folder that the extraction process of the zip file created.

 

A few warning dialogs about the project location not being trusted will appear, just check the option of not showing the message again  and click ok.

 

Right click the OpenVista2k5 solution and select Properties.

 

Click "Startup Project" from the left tree view.

 

Click the "Single startup project" radio button, and then change the  selection in the combo to be OpenVistaCIS2k5.

 

Next, click the "Configuration Properties" item from the left tree view.

 

Uncheck the Build boxes next to Medsphere.OpenVista.Core.Test2k5,  Medsphere.OpenVista.Shared.Test2k5, and OpenVistaCIS.Test2k5 to indicate that they should not be built. Click Ok.

 

Building:

 

You should finally be able to build the solution by clicking Build -> Build Solution from the menu bar or pressing F6.

0 Comments Permalink

Medsphere's OpenVistaCIS development team is happy and proud to announce OpenVistaCIS 1.0 Release Candidate 1.

 

Countless hours were spent to make this release happen by my team members Albert Gnandt, Andy Pardue, Bill Gibbons, Jon Tai, Peter Johanson, and our previous team members and friends Anthony Taranto, Brad Taylor, and Cody Russell; also kudos to our QA department's members Evangeline Nunez, Janet Michaels, Karthick Krishnan, Karuna Dantuluri, Kristina Borja, and Lynne Mundi; our documentation writer Kathy Steele; and project manager Fay Struble.

 

Some of the highlights for this release are:

 

  • Print support for the Graph widget.
  • Medical Reconciliation support.
  • Deprecation and removal of the Bridge.
  • and gazillions of bug fixes.

 

Release notes.

Download.

 

For those users running the Windows operating system, make sure you use the latest Gtk# installer.

0 Comments Permalink

Novell has released a Gtk# Win32 installer for Gtk# 2.12.6, based on the installer source code released by Medsphere.  This is really cool to see more work by Medsphere being integrated into the "upstream" open source communities.

 

The release announcement: http://lists.ximian.com/pipermail/mono-devel-list/2008-December/030125.html

 

I will still stress that this is not the officially supported installer or Gtk# version for Medsphere products, and we recommend not using it in a production environment.

0 Comments Permalink

One of the things us CIS developer constantly face is the question, "What the heck does this RPC do?!" Seasoned (or masochistic) developers will often jump into FileMan, and inspect the entry from the REMOTE PROCEDURE and go on their merry way. However, for those of us looking for something a little easier on the eyes (and minds), one of our developers wrote a handy RPC reference page. We've put a copy of it up where other's can get to, so it's now available at:

 

http://medsphere.org/docs/vista-rpcs/

 

This is driven by a static file generated from the latest public release of OpenVista Server. Hope others find this useful!

0 Comments Permalink

Actions

Notifications

Getting Started

OpenVista CIS requires a connection to an OpenVista Server instance.

If you just want to try CIS, the easiest way to get started is to connect Medsphere's OpenVista Public Demo Server.

Alternatively, you can download the OpenVista Appliance, which is a self-contained virtual machine. Inside, OpenVista CIS and OpenVista Server are already pre-configured.

Finally, if you want a more permanent setup, you can download and install OpenVista Server yourself.