[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Starting packaging VistA (Re: LSM in Geneva)



On Sun, Jul 8, 2012 at 12:23 AM, Yaroslav Halchenko <yoh@onerussian.com> wrote:

With such a size it is worth looking if major part of this is some non volatile (rarely changing) data which might be packaged separately and just Depend:ed upon
It would be sad if each update would need 1 gb download
--



Yes, that's a good point.

The same question came up on Friday
among VistA developers.     :-)

http://osehra.org/event/code-convergence-call-thursday-july-12th#comment-640



The good news is that:

           It is indeed the case that updates will be
           very small compared to the size of VistA itself.


Again, comparing VistA to Linux: Updates usually come in the
form of focused updates to one of the many VistA components,
and very rarely in the form of a whole system-wide update.

Currently VistA is organized into Packages (at least at the file
representation level). There are about 125 Packages.

The current mechanism for distributing updates is the use
of "KIDS" files (Kernel Installation and Distribution System).

Some background about it can be found here:
http://www.osehra.org/wiki/vista-kidsskids-background

KIDS files contain a combination of

- pre-installation checks (for example, dependencies)
- routine updates
- database changes
- post-installation steps

The KIDS files however, also have some limitations,
and the VistA community is now looking at improving
this mechanism.

There is a lot in this front where Debian packagers could
contribute their experience to the improvement of KIDS
files.


For reference:
A collection of the KIDS update files released by the VA
is available here:

                  http://code.osehra.org/files/patches/


Let's take for example, these HL7 patches
http://code.osehra.org/files/patches/Health%20Level%20Seven/

Here is the actual patch:
http://code.osehra.org/files/patches/Health%20Level%20Seven/HL-1P6_SEQ-123_PAT-152.KID

and a description of it:
http://code.osehra.org/files/patches/Health%20Level%20Seven/HL-1P6_SEQ-123_PAT-152.TXT

The patch is only:  ~30K.

Note that, conceptually, in VistA, the routines are stored as entries
in the database (a NoSQL one), and therefore, you can interpret
"source code" updates as "database updates".

in the KIDS file above, you can see for example in line 217:

       "RTN","HLOFILER")

that refers to the routine HLOFILER
http://code.osehra.org/dox/Routine_HLOFILER.html

whose source code is:
http://code.osehra.org/dox/Routine_HLOFILER_source.html

If one follows the lines 127 to 547, in the KIDS file,  one can see the
listing of the HLOFILER routine, line by line.

For example in lines 431-432 of the KIDS file, one finds:

431:         "RTN","HLOFILER",107,0)
433:          D ^%ZTER

Where RTN refers to Routine, HLOFILER is the name
of the routine, 107 is the line of code that follow, and
the text "D ^%ZTER" is the actual text of that line of
code, which matches line 107 in the routine in file:

VistA-FOIA/Packages/Health Level Seven/Routines/HLOFILER.m

http://code.osehra.org/dox/Routine_HLOFILER_source.html


One could imagine that the Debian updates to VistA could
be repackaging the KIDS files and then applying them as
part of the "vista" package update.

Precautions will have to be taken to preserve the "customer"
data that may have been put in the VistA database.


Consider the highly simplified scenario:

a) July 2012:   Install VistA

b) August 2012 - April 2015:   Load patient data into VistA

c) September 2015:  Install VistA updates, without losing
     nor damaging (b)


As with any other system based on a database, a procedure
has to be defined to safely check if the updates can be made
without destroying,  or reducing the integrity of the customer
data in the database.


Also,
Just like "aptitude" in Debian, VistA has a level of self-awareness
of the updates that have been applied to it. This is implemented
in the FileMan component of VistA, that also includes a self
description of the system.

This certainly will be a great topic for a
joint hackathon of Debian and VistA developers...     :-)


--

In summary:

1) Yes, updates to the system can be done in small increments.

2) A mechanism (KIDS) exists for current VistA installations.

3) This mechanism (KIDS) can be improved...

4) Work will have to be done to translate or integrate the KIDS
     mechanism with the Debian update procedures.

5) In many cases, manual intervention will be needed by
    the Database Administrator of the local installation, to
    ensure the integrity of the customer data that has been
    stored in the database.




A word of caution:

At this early point of the VistA Debian packaging, this is certainly
not intended as the system that you could deploy in a clinical facility.
The goal rather is to make VistA readily available to anyone who
want to take a look at the system, and get familiar with it, hopefully
then joining the VistA community and helping develop, maintain
and improve the system.



         Luis



Reply to: