The work described on this page has been conducted as part of research with Siemens Medical Engineering in Erlangen, Germany, as well as Project Spectrum at the Electronic Radiology Laboratory (ERL) at Washington University School of Medicine and BJC Health System, in collaboration with the industrial partners IBM/ISSC, Kodak Health Imaging Systems, and Southwestern Bell Corporation.
The primary objective of Project Spectrum is to link the stand-alone heterogeneous computer systems of 18 acute care facilities and over 5,500 physicians in the BJC system into a single integrated network. Key system requirements are to support seamless electronic access to clinical expertise from any point in the system. Other requirements call for immediate, online access to information via advanced clinical workstations attached to high-speed networks, teleradiology and remote consultation capabilities, and practice management support tools.
The following papers discuss various aspects of our work on distributed electronic medical imaging systems.
The Java programming language has gained substantial popularity in the past two years. Java's networking features, along with the growing number of Web browsers that execute Java applets, facilitates Internet programming. Despite the popularity of Java, however, there are many concerns about its efficiency. In particular, networking and computation performance are key concerns when considering the use of Java to develop performance-sensitive distributed applications.
This paper makes three contributions to the study of Java for performance-sensitive distributed applications. First, we describe an architecture using Java and the Web to develop MedJava, which is a distributed electronic medical imaging system with stringent networking and computation requirements. Second, we present benchmarks of MedJava image processing and compare the results to the performance of xv, which is an equivalent image processing application written in C. Finally, we present performance benchmarks using Java as a transport interface to exchange large medical images over high-speed ATM networks.
For computationally intensive algorithms, such as image filters, hand-optimized Java code, coupled with use of a JIT compiler, can sometimes compensate for the lack of compile-time optimization and yield performance commensurate with identical compiled C code. With rigorous compile-time optimizations employed, C compilers still tend to generate more efficient code. However, with the advent of highly optimizing Java compilers, it should be feasible to use Java for the performance-sensitive distributed applications where C and C++ are currently used.
This paper describes the design and performance of an object-oriented communication framework being developed by Kodak Health Imaging Systems and the Electronic Radiology Laboratory at Washington University School of Medicine. The framework is designed to meet the demands of next-generation electronic medical imaging systems, which must transfer large quantities of data efficiently and flexibly in a distributed environment. A novel aspect of this framework is its seamless integration of flexible high-level CORBA distributed object computing middleware with efficient low-level socket network programming mechanisms. In the paper, we outline the design goals and software architecture of our framework, describe how we resolved design challenges, and illustrate the performance of the framework over high-speed ATM networks.
The Visual Medical Imaging System (VMIS) project will allow the monitoring and visualization of the various components of the distributed electronic imaging system. Other parts of the proposal include Concurrent CORBA and Network Components.
We are planning to achieve automation and scalable event management by a combination of active "agents" and reactive "filters." Agents are active objects created in a distributed system to perform complex coordination tasks on behalf of applications or users (known as event "consumers"). Filters are reactive objects that monitor and classify event flow within a distributed system.
Agents and filters are well suited for conveying information to doctors, staff, and patients in a timely manner, as well as attracting attention to unexpected circumstances that must be handled immediately. Many tasks that are performed manually in the current BJC information system can be offloaded to agents and filters. For instance, doctors, staff, patients, or researchers at BJC can specify personal agents that embody their preferences for handling various types of events (such as pager or telephone alerts, clinical appointments, night-call cross-coverage, vacation cross-coverage, patient waiting, clinical emergencies, critical values, emerging trends, or schedule conflicts). Filters are designed to reduce the volume of traffic required to monitor, classify, and deliver events to consumers.
There are two general classes of agents in a distributed heath care system: patient-specific agents and population-based agents. These agents can be configures to perform various services such as monitoring for life-threatening critical values, inappropriate use of drugs such as antibiotics or narcotics, and access to digitial libraries for patient-specific diagnostic and therapeutic decisions. These agents can be configured to perform various services such as monitoring for quality problems involving the misuse of narcotics or antibiotics, navigating digital libraries to locate relevant literature. In addition, personal agents may perform tasks on behalf of end users such as scheduling and planning activities. Population-based agents are programmed to detect events of interest for medical epidemiology (such as correlating events that suggest medical anomalies across a cohort of similar patients or a population at risk). Population-based physician services might process utilization review events, quality events, emerging disease trends, and new disease detection such as the appearance of newly resistance bacteriological organisms.
To perform their tasks, agents may interact with many other agents that embody different ways of accessing and notifying other event consumers. Thus, a large collection of agents organized as a complex interacting "community" of distributed tasks will constantly monitor and detect events of interest. However, using agents alone will not scale since the basic algorithm for monitoring, classifying, and coordinating multiple event flows grows in proportion to the number of consumers interested in being notified when certain events occur.
Our research on agents will provide scalability via flexible, high-performance event filtering mechanisms. Filters may be placed strategically within agents to direct events of interest to event consumers throughout a distributed system, including other agents. Thus, multiple agents and filters can be composed and/or arranged hierarchically to enhance the scalability of event notification in a large-scale distributed system. Furthermore, agents and filters can be restructured rapidly to accommodate the dynamically changing information capture requirements of event consumers.
Back to Douglas C. Schmidt's home page.
Last modified 11:34:42 CDT 28 September 2006