By
Kevin C. O'Kane, and Elizabeth E. McColligan
Summarized by Chris Bonnici
In the distributed environment of the World Wide Web, the
ability to run a program written in the language on any combination of target operating
system and hardware is of critical importance. The paper describes the development of a
virtual machine environment that can support decentralized M based medical record.
Many of the medically based Web systems recently proposed
rely on the PERL or REXX scripting languages that, in turn, depend upon commercial data
warehousing systems for data base services. More recently commercial systems have become
available, generally only on large computers, in which the data base system itself is the
web server. Both are examples of server-side computing with the browser running on the
user workstation generally functioning as little more than a sophisticated graphical
terminal utilizing HTML as the server-client language. HTML is being used iinput data from
and display results to the client.
Problems with the model presented above are that these
normally require powerful servers. With a moderate amount of users (by web standards) the
amount of processing at the server can be enormous. On top of this one must add the
computing cycles taken up by the script processor. The authors also point out that script
processors such as PERL and REXX are not particularly well suited for medical record
applications given the free form and inconsistent nature of medical data. Also different
departments may need to view different (or differently arranged information about a
patient) and this makes the area of medical informatics quite unique. Since script
processors normally exist for relatively modern database applications, on old computer
platforms running legacy systems one must port these and on many occasions, a varying
proportion of the system would have to be re-written.
A number of database vendors (including some M vendors)
have incorporated web servers directly into their products. This bypasses the need to for
PERL or REXX scripting tools one generally locks the user into a large system, single
language environment with little flexibility to access graphical, sound and video content
that are today an integral part of the web. It also limits the range of possible other
programs that can be run concurrently for various needs. A general purpose web server with
no restrictions on the hardware and types of applications that can be developed is most
desirable. (The Network ComputeNCis
being viewed by some as the next generation of computer. It will be physically small,
cheap and not very powerful. The underlying CPU can also vary from one brand of NC to
another - CB).
"This paper presents a Mumps virtual machine environment
that is transportable to most popular desktop operating systems and has the following
features:
- it is derived from M and provides a full range of
string handling routines and built-in functions;
- it provides a B-tree based hierarchical and
relational data base facility;
- it is small, efficient, quickly loaded and
executed, and it co-exists with other server based applications;
- it is fully transportable to Unix, OS/2, Win95 and
Win/NT environments;
- it provides full and easy access to user entered
HTML form data;
- it has several extensions that aid in return of
HTML document code to the server and client;
- it permits access to operating system facilities
including other script processors and data base management systems;
- it is scalable from PC's to mainframes;
- it can access all system facilities such as SQL,
DB2 and Oracle;
- it permits legacy Mumps based software to run
directly on the Internet;
- it can both execute software sent from clients and
it can download software applets for client execution;
- and it can be run in standalone mode with or
without a Web browser."
The system described above is based on a M shell processor
written in C++ making it system independent. A M program consists of an ASCII file
containing Mumps source code. When invoked by a web server, the interpreter then looks for
any GET mode data passed by the CGI interface in the system environment variable QUERY_STRING.
If any data is present in the environment variable QUERY_STRING, it is scanned,
decoded, and decomposed into varname=value tokens that are then used to instantiate
and initialize Mumps local variables. The varnames are derived from the NAME field
of the HTML FORM tag and the values are derived from either the VALUE field or actual user
entered text. The interpreter then executes the script and any standard output generated
is captured by the web server for return to the originating browser. The interpreter may
also be invoked in standalone mode operation without the CGI interface.
A user at a browser sends input to a program operating in
the Web server cgi-bin interface through the HTML forms facility. In this
mode of operation, the server begins the dialogue by sending to the Web browser an HTML
encoded command stream that includes one or more instances of the <FORM>
command. The <FORM> command causes the browser to display data input fields
on the user's screen. These appear as data entry fields, check boxes, list boxes or radio
buttons. When the user, through his browser, has completed entry of the data item or items
or selection of one or more of the other multiple choice options, the Web browser encodes
and sends the results to the Web server for processing. The web server stores the
parameters from the browser in the environment variable QUERY_STRING and invokes
the Mumps processor. The Mumps processor executes the appropriate Mumps program (the
identity of which was one of the parameters) and returns a stream of text to the web
server for transmission to the originating browser. The originating browser, receiving the
results, displays them to the user.
Web servers do not preserve information pertaining to the
user state from one transaction to the next. This means that data from the previous
transaction will not be available. As happens frequently in Web applications, the MUMPS
Virtual Machine resubmits to the user all data that will be subsequently needed to deepen
a query. Whether the data is made visible to the user or not is totally at the discretion
of the program that generates the output. For example, after entering a patient reference
and obtaining the static details of the patient, the patient reference will be transmitted
to the user. When the user clicks on one of the options on the latest screen the patient
reference is retransmitted together with the new data.
Information between the originator and the receiver can
travel through a host of servers and such sensitive data can be either examined and worst
still tampered with. Presently there are a number of robust security features including
data encryption, with other under development. Also data must be made available to only
those who should have access to it. Most servers support a password based user
authentication and access control. Other forms of tokens can be used if necessary. These
issues are not implemented directly into the MUMPS Virtual Machine but are available
through their own specialized markets.
Another feature of the Mumps language processor is that it
can send and receive messages directly from/to other Web servers and browsers. For
example, a central server may instruct a remote server to execute programs with the
results returned to the central server. This type of distributed processing allows load
sharing and can be used to make the overall operation much more efficient. Also, a central
server can update data at remote workstations dynamically by passing update data to the
workstations and invoking the appropriate update routines.
Distributed Multi-Host Virtual System
Since this Mumps processor executes on most commonly
used system platforms, it provides a virtual environment in which Mumps programs can
execute, independent of the host operating system or hardware configuration. Since a M
program written for one platform executes in exactly the same way on any other platform,
programs can be distributed by web servers to remote browser clients without regard to the
configuration of the target system upon which they will ultimately execute. Thus it
becomes possible to transmit code and data that will execute remotely. While this approach
is very efficient, the major problem that has to be dealt with is the problem of data
changes while the code lies on some remote CPU. This problem can be solved by maintaining
a list with the systems (be they other servers or end users) that have accessed the
record. All local databases must then have their record either updated or killed off so
that the user will have to retrieve the fresh data. Given that such tables can grow to
enormous sizes, end user systems and servers should automatically age records and after a
certain time should be removed from the local database and server list.
Conclusion
"We believe that this environment facilitates construction of
efficient, fully functional, platform independent, multi-point medical record information
systems that can be accessed any-where by low cost Web browsers to search, retrieve,
download and analyze patient information."
Free copies of this Mumps processor along with
documentation for Win95, Win/NT, OS/2, Linux and Sun Solaris operating systems are
available at http://www.cs.uni.edu/~okane.
A sample demonstration medical record system is also
present along with links to related software. With these packages, it should be possible
for a system designer to install in relatively short order a functional Intranet
information system based on Mumps.
Contact
Information |
Kevin C. O'Kane
Computer Science Dept.,
University of Northern Iowa,
Cedar Falls, IA 50614
USA |
Elizabeth E. McColligan
Datamedic Corp.,
51 Sawyer Rd,
Waltham,
MA 02154
USA |
URL: http://www.cs.uni.edu/~okane |
"Free
copies of this Mumps processor along with documentation are available at http://www.cs.uni.edu/~okane."

E&OE

