Patent Publication Number: US-8974406-B2

Title: Interface for medical infusion pump

Description:
RELATED APPLICATIONS 
     This application is a division of application Ser. No. 11/702,925 filed Feb. 4, 2007, which claims the benefit of U.S. Provisional Application No. 60/835,926 filed Aug. 3, 2006, each of which is hereby fully incorporated herein by reference. 
    
    
     BACKGROUND 
     Patients at hospitals and other care centers regularly require controlled drug intake as a part of the patient&#39;s prescribed therapy. One form of controlled drug intake is accomplished by infusing fluidic drugs with a medical infusion pump. 
     Medical infusion pumps, in general, provide regulated drug delivery to a patient. These pumps are used to deliver a selected drug or other therapeutic agent to a patient at a predetermined rate that is programmed into the pump. However, programming and managing such pumps can be difficult and cumbersome. Programming typically includes preloading a pump program into a pump and then entering pump parameters or data into the pump through a keypad that is directly in the pump. Each time the pump is programmed, the data must be reentered by hand. 
     Managing the status and locations of pumps also can be difficult. A single pump can be us programmed for delivering different fluids in different therapies and in different locations within a hospital. Similarly, the status of a pump and alarms can be difficult to monitor because the pumps are often in locations other than where the caregiver is located and have small displays on which information can be difficult to see. 
     SUMMARY 
     According to a first aspect, a method of programming a medical infusion pump is disclosed. The method includes displaying a meter having two or more locations, each of the two or more locations representing a corresponding parameter value programmable into the medical infusion pump. The method further includes displaying an indicator having a selectable positional relationship to the meter, the selected position corresponding to a parameter value. 
     According to a second aspect, an apparatus for programming a medical infusion pump is disclosed. The apparatus includes a memory configured to store at least two parameter values programmable into the medical infusion pump. The apparatus also includes a monitor. The apparatus further includes a programmable circuit in electrical communication with the memory and the monitor. The programmable circuit is programmed to display on the monitor a meter having two or more locations, each of the two or more locations representing a corresponding parameter value programmable into the medical infusion pump. The programmable circuit is also programmed to display an indicator having a selectable positional relationship to the meter, the selected position corresponding to a parameter value. 
     According to a third aspect, a method of programming a medical infusion pump is disclosed. The method includes displaying a slider bar having a plurality of locations, each of the plurality of locations representing a corresponding parameter value programmable into the medical infusion pump, the slider bar including a warning region located along a portion of the slider bar. The method also includes displaying an indicator movable along the slider bar to a selected position, the selected position corresponding to a parameter value. The method further includes downloading the parameter value to the medical infusion pump. The method also includes, upon detection of movement of the indicator to a position within the warning region, issuing an alert. 
     According to yet another aspect, an apparatus for programming a medical infusion pump is disclosed. The apparatus includes a memory configured to store at least two parameter values programmable into the medical infusion pump and one or more hard limits. The apparatus also includes a monitor. The apparatus further includes a programmable circuit in electrical communication with the memory and the monitor. The programmable circuit is programmed to set one or more hard limits to define a range of permissible parameter values for programming a medical infusion pump. The programmable circuit is also programmed to display on the monitor a meter having two or more locations, each of the two or more locations representing a corresponding parameter value within the range. The programmable circuit is further programmed to display on the monitor an indicator having a positional relationship to the meter, the position corresponding to a parameter value within the range. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates a pump-computer communication system according to a possible embodiment of the present disclosure; 
         FIG. 2  illustrates an infusion pump network according to a possible embodiment of the present disclosure; 
         FIG. 3  illustrates the architecture of a computing system that can be used to implement aspects of the present disclosure; 
         FIG. 4  illustrates the architecture of a pump that can be used to implement aspects of the present disclosure; 
         FIG. 5  is an exemplary infusion pump network according to a possible embodiment of the present disclosure; 
         FIG. 6A  is an exemplary data structure for a pump protocol library according to a possible embodiment of the present disclosure; 
         FIG. 6B  is an exemplary data structure for a pump protocol library according to a possible embodiment of the present disclosure; 
         FIG. 6C  is an exemplary data structure for pump protocols according to a possible embodiment of the present disclosure; 
         FIG. 7  is an exemplary architecture of administrative software for setting global pump protocols according to a possible embodiment of the present disclosure; 
         FIG. 8  is one example of a computer user interface library import screen in accordance with the present disclosure; 
         FIG. 9  is one example of a computer user interface for administrative software in accordance with the present disclosure; 
         FIG. 10  is one example of a computer user interface location tab in accordance with the present disclosure; 
         FIG. 11  is one example of a computer user interface therapy tab in accordance with the present disclosure; 
         FIG. 12  is one example of a computer user interface protocol tab in accordance with the present disclosure; 
         FIG. 13  is one example of a computer user interface drug bar code display screen in accordance with the present disclosure; 
         FIG. 14  is one example of a computer user interface prescription order form display screen in accordance with the present disclosure; 
         FIG. 15  is one example of a computer user interface therapy selection screen in accordance with the present disclosure; 
         FIG. 16  is one example of a computer user interface qualifier selection screen in accordance with the present disclosure; 
         FIG. 17  is one example of a computer user interface drug selection screen in accordance with the present disclosure; 
         FIG. 18  is one example of a computer user interface drug delivery tab in accordance with the present disclosure; 
         FIG. 19  is one example of a computer user interface weight-based drug delivery tab in accordance with the present disclosure; 
         FIG. 20  is one example of a computer user interface secondary drug delivery tab in accordance with the present disclosure; 
         FIG. 21  is one example of a computer user interface alarm tab in accordance with the present disclosure; 
         FIG. 22  is one example of a computer user interface security tab in accordance with the present disclosure; 
         FIG. 23  is one example of a computer user interface appearance tab in accordance with the present disclosure; 
         FIG. 24  is one example of a computer user interface report tab in accordance with the present disclosure; 
         FIG. 25  is one example of a computer user interface library export screen in accordance with the present disclosure; 
         FIG. 26  is a flow diagram of methods and systems for custom programming of a medical infusion pump according to a possible embodiment of the present disclosure; 
         FIG. 27  is one example of a computer user interface library import screen in accordance with the present disclosure; 
         FIG. 28  is a flow diagram of methods and systems for editing and loading a protocol for a medical infusion pump according to a possible embodiment of the present disclosure; 
         FIG. 29  is one example of a computer user interface protocol selection screen in accordance with the present disclosure; 
         FIG. 30  is one example of a computer user interface therapy selection screen in accordance with the present disclosure; 
         FIG. 31  is one example of a computer user interface qualifier selection screen in accordance with the present disclosure; 
         FIG. 32  is one example of a computer user interface drug selection screen in accordance with the present disclosure; 
         FIG. 33  is a flow diagram of methods and systems for custom programming of a medical infusion pump according to a possible embodiment of the present disclosure; 
         FIG. 34  is one example of a computer user interface drug delivery customization screen in accordance with the present disclosure; 
         FIG. 35  is one example of a computer user interface drug delivery customization screen in accordance with the present disclosure; 
         FIG. 36  is one example of a computer user interface medical infusion pump programming screen in accordance with the present disclosure; 
         FIG. 37  is a flow diagram of methods and systems for displaying medical infusion pump customizations according to a possible embodiment of the present disclosure; 
         FIG. 38  is one example of a computer user interface pump comparison screen in accordance with the present disclosure; 
         FIG. 39  is a schematic front view of a medical infusion pump displaying a change bar according to a possible embodiment of the present disclosure; 
         FIG. 40  is one example of a computer user interface report generation screen in accordance with the present disclosure; and 
         FIG. 41  is one example of a computer user interface report screen in accordance with the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Various embodiments will be described in detail with reference to the drawings, wherein like reference numerals represent like parts and assemblies throughout the several views. Reference to various embodiments does not limit the scope of the claims attached hereto. Additionally, any examples set forth in this specification are not intended to be limiting and merely set forth some of the many possible embodiments for the appended claims. 
     The following discussion is intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. Although not required, the invention will be described in the general context of computer-executable instructions being executed by a computer, for example, a hand held computer, a personal computing system, or a medical infusion pump. The structure, creation, and use of a message store hierarchical folder structure are described after the discussion of an exemplary operating environment. 
     Additionally, the logical operations of the various embodiments of the invention described herein are implemented as: (1) a sequence of computer implemented operations running on a computing system; and/or (2) interconnected machine modules within the computing system. Modules represent functions executed by program code such as commonly available programming languages or as the code found in a dynamic-link library (DLL). The implementation used is a matter of choice dependent on the performance requirements of the pump and the computing systems with which it interfaces. Accordingly, the logical operations making up the embodiments of the invention described herein can be referred to alternatively as operations, modules, and the like. 
       FIG. 1  illustrates an exemplary embodiment of an infusion pump network  100  having a medical infusion pump  102 , a computing system  104 , and a communications link  106 . The medical infusion pump  102  is configured to deliver therapeutic fluids, such as drugs, saline, or nutrition to a patient. Examples, of medical infusion pumps  102  include ambulatory pumps, stationary pumps, and pole mounted pumps. 
     The computing system  104  is configured to execute computer-readable instructions, such as computer software. The computing system  104  can be located in a variety of locations such as the point of care (POC) where a patient is being treated, in a healthcare facility at a location remote from the POC, or even at an off-site location remote from the healthcare facility itself. In further embodiments, the medical infusion pump  102  acts as the computing system  104 . 
     In the exemplary embodiment, the computing system  104  is programmed to generate and store pump protocols for execution in the context of a pump application program. Each pump protocol includes a series of pump parameters. Pump parameters refer to settings that define an operational aspect of a medical infusion pump. The pump parameters dictate the control of the pump. 
     Pump protocols are collections of these pump parameters defining the variable operational characteristics of a medical infusion pump during application of a specific therapy, qualifier, and drug. The pump protocol includes a listing of operational parameters to be included in the pump, and correlates to an index for referring to a specific protocol containing a specific set of pump parameters. The index can be associated with a therapy, qualifier, and drug, and is either contained within the protocol or associated with a specific protocol. The pump protocol includes patient specific pump parameters and non-patient specific pump parameters. Patient specific pump parameters refer to those parameters which are set on a patient-by-patient basis, and for example include the basal delivery rate or bolus amount. Non-patient specific pump parameters refer to those parameters which are set for the pump to perform specific tasks, and do not account for the specific patient to which they are applied. These parameters are generally related to the pump, the infusion pump network, or the medical care to be provided by the pump and/or pump network. Non-patient specific pump parameters can include, for example, a range of permissible values for basal delivery, a range of values and patterns for basal delivery, a range of permissible values for boluses, a range of values and patterns for extended boluses, a starting value within a particular range of values, alarm values, protocols for data communication, and various flag settings. 
     A pump application program is a program having instructions (e.g., executable code, rules, and/or data) that control operation of the pump for a specific therapy or type of delivery (e.g., continuous delivery, intermittent delivery, pain control, chemotherapy, total parenteral nutrition, etc.). For example, a pump application program might contain instructions that define operation of a pump to accomplish various of the pump parameters. Pump application programs include, for example, pump protocols including both patient specific and non-patient specific pump parameters, and instructions for allocating memory, user interfaces, or algorithms for monitoring various sensors and driving a motor for the pump mechanism. 
     The communications link  106  connects the pump  102  and computing system  104 . In various embodiments, the communications link  106  can include serial or parallel connections, wired or wireless connections, and a direct or networked connection to a computer. Additionally, the pump  102  and the computing system  104  can communicate using any protocol appropriate for data communication. Examples of network connections to a computer include Intranet, Internet, and LAN (e.g., Ethernet). Examples of wired connections to a computer include USB, RS-232, Firewire, and power-line modem connection. Examples of wireless connections include bluetooth, 802.11 a/b/g, infrared (IR), and radio frequency (RF). 
       FIG. 2  illustrates an exemplary embodiment of an infusion pump network  200  having a server  206  networked with a plurality of computing systems  104   1 - 104   n . The network  200  can be any wired or wireless network that enables data communication between the server, computing systems, and medical infusion pumps. Examples of networks include the Internet, Intranets, and LANs. Each computing system  104  can communicate with a medical infusion pump  102   1 - 102   n  through a communication link  106 . 
     In the exemplary embodiment, the individual computing systems  104   n  execute software for generating and managing pump application programs and sets of pump operating parameters. The pump application programs and sets of pump operating parameters are stored on the server  206  so they can be accessed by other individual computing systems  104   n . The individual computing systems  104   n  are also programmed to retrieve previously created pump application programs and sets of pump operating parameters that are stored on the server  206  for viewing, editing, and downloading to medical infusion pumps  102   n . 
     In alternative embodiments, the medical infusion pumps  102   n  can directly access the server to retrieve pump application programs and sets of pump operating parameters. For example, the medical infusion pumps  102   n  can be loaded with client software such as a web browser and communicate directly with the network  200 , either through a wired or wireless connection as described herein. 
     In other alternative embodiments, one or more of the computing systems is not configured to communicate directly with a medical infusion pump  102   n , but rather provides administrative access to the server  206  for generating, viewing, and editing pump application programs and sets of pump operating parameters. Additionally, servers, workstations, and other computing systems unaffiliated with the medical infusion pumps  102   n  can be included in the network  200 . 
     In yet other alternative embodiments, the software is executed in the server  206 . For example, the server functions as an application service provider that communicates user interface and other data entries in mark-up language such as HTML or some other language or protocol that allows a user to execute software from a remote location. In these embodiments, the server  206  can function as an application service provider in which the server provides access to the software for generating and storing pump application programs and pump protocols that a user can create and download to a medical infusion pump. For example, the server  206  could be located at a pump manufacture, pharmaceutical manufacture, pharmacist, or some other third party separate from the user. The server  206  in such an embodiment can be accessed either from an individual computing system  104  or by a medical infusion pump  102  that has networking capabilities and client software. 
     Example embodiments of a server  206  and a medical infusion pump  102  having a web browser are disclosed in U.S. patent application Ser. No. 11/066,425, which was filed on Feb. 22, 2005 and is entitled Server for Medical Device, the entire disclosure of which is hereby incorporated by reference. 
       FIG. 3  illustrates an exemplary architecture that can be used to implement aspects of the present disclosure, including the computing systems  104  and the server  206 . The computing system architecture includes a general purpose computing device in the form of a computing system  300 . The computing system  300  can be used, for example, as the computing system or server of  FIG. 2 , and can execute program modules included in the administrative software or user software disclosed below. 
     The computing system  300  including at least one processing system  302 . A variety of processing units are available from a variety of manufacturers, for example, Intel or Advanced Micro Devices. The computing system  300  also includes a system memory  304 , and a system bus  306  that couples various system components including the system memory  304  to the processing unit  302 . The system bus  306  may be any of a number of types of bus structures including a memory bus, or memory controller; a peripheral bus; and a local bus using any of a variety of bus architectures. 
     The system memory  304  can include read only memory (ROM)  308  and random access memory (RAM)  310 . A basic input/output system  312  (BIOS), containing the basic routines that help transfer information between elements within the computing system  300 , such as during start up, is typically stored in the ROM  308 . 
     The computing system  300  can also include a secondary storage device  313 , such as a hard disk drive, for reading from and writing to a hard disk (not shown), and/or a compact flash card  314 . 
     The hard disk drive  313  and compact flash card  314  are connected to the system bus  306  by a hard disk drive interface  320  and a compact flash card interface  322 , respectively. The drives and cards and their associated computer readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the computing system  300 . 
     Although the exemplary environment described herein employs a hard disk drive  313  and a compact flash card  314 , other types of computer-readable media, capable of storing data, can be used in the exemplary system. Examples of these other types of computer-readable mediums include magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, CD ROMS, DVD ROMS, random access memories (RAMs), or read only memories (ROMs). A number of program modules may be stored on the hard disk  313 , compact flash card  314 , ROM  308 , or RAM  310 , including an operating system  326 , one or more application programs  328 , other program modules  330 , and program data  332 . A user may enter commands and information into the computing system  300  through an input device  334 . Examples of input devices might include a keyboard, mouse, microphone, joystick, game pad, satellite dish, scanner, digital camera, touch screen, and a telephone. These and other input devices are often connected to the processing unit  302  through an interface  340  that is coupled to the system bus  306 . These input devices also might be connected by any number of interfaces, such as a parallel port, serial port, game port, or a universal serial bus (USB). Wireless communication between input devices and interfaces  340  is possible as well, and can include infrared, bluetooth, 802.11a/b/g, cellular, or other radio frequency communication systems. A display device  342 , such as a monitor or touch screen LCD panel, is also connected to the system bus  306  via an interface, such as a video adapter  344 . The display device  342  might be internal or external. In addition to the display device  342 , computing systems, in general, typically include other peripheral devices (not shown), such as speakers, printers, and palm devices. 
     When used in a LAN networking environment, the computing system  300  is connected to the local network through a network interface or adapter  352 . When used in a WAN networking environment, such as the Internet, the computing system  300  typically includes a modem  354  or other communications type, such as a direct connection, for establishing communications over the wide area network. The modem  354 , which can be internal or external, is connected to the system bus  306  via the interface  340 . In a networked environment, program modules depicted relative to the computing system  300 , or portions thereof, may be stored in a remote memory storage device. It will be appreciated that the network connections shown are exemplary and other methods of establishing a communications link between the computing systems may be used. 
     The computing system  300  might also include a recorder  360  connected to the memory  304 . The recorder  360  includes a microphone for receiving sound input and is in communication with the memory  304  for buffering and storing the sound input. The recorder  360  also can include a record button  361  for activating the microphone and communicating the sound input to the memory  304 . 
     A computing device, such as computing system  300 , typically includes at least some form of computer-readable media. Computer readable media can be any available media that can be accessed by the computing system  300 . By way of example, and not limitation, computer-readable media might comprise computer storage media and communication media. 
     Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by the computing system  300 . 
     Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media. Computer-readable media may also be referred to as computer program product. 
       FIG. 4  illustrates the architecture of a medical infusion pump  400  that can be used to implement aspects of the present disclosure. A microprocessor  402  is in electrical communication with and controls a pump motor  404 , a screen  406 , an audible alarm  408 , and a vibratory alarm  410 . Other embodiments can use a microcomputer, or any other type of programmable circuit, in place of the microprocessor. 
     The pump motor  404  drives a drive mechanism  412 . The drive mechanism  412  delivers the therapeutic fluid to a patient. The drive mechanism can be connected to a plunger system, a peristaltic drive mechanism, or another type of fluid delivery system. 
     The screen  406  can have many different configurations such as an LCD screen. The screen  406  displays a user interface that presents various items of information useful to a patient or caregiver. The audible alarm  408  is a beeper, and an alarm provides actual alarms, warnings, and reminders. Similar to other portable electronic devices such as a cellular telephone, the vibratory alarm  410  provides an alarm to either supplement the audio alarms or replace the audio alarm when an audible beep would be disruptive or not heard. A user can selectively enable or disable the audible  408  and vibratory  410  alarms. In one possible embodiment, however, both the audible  408  and vibratory  410  alarms cannot be disabled at the same time. The microprocessor  402  is in electrical communication with both a random access memory (RAM)  416  and a read only memory (ROM)  418 , which are onboard the pump  400  but external to the microprocessor  402  itself. In one possible embodiment, the microprocessor  402  includes internal memory as well. The RAM  416  is a static RAM stores that data that can change over time such as pump settings and a historical log of events experienced by the medical infusion pump  400 . The ROM  418  stores code for the operating system and the application programs. The ROM  418  can be any type of programmable ROM such as an EPROM. In one possible embodiment, the RAM  416  has 500 kilobytes of memory capacity and the ROM  418  has 2 megabytes of memory capacity. 
     An infrared (IR) port  420  is in electrical communication with the microprocessor. As explained in more detail below, the IR port  420  provides data communication with an external device such as a computer for programming an application program, programming pump settings, and downloading historical data logs. The medical infusion pump  400  can include other types of communication ports in place of or in addition to the IR port  420 . Examples of other possible communication ports include a radio frequency (RF) port or a port that provides a hard-wired data communication link such as an RS-232 port, a USB port, or the like. 
     A real-time clock  422  provides a clock signal to the microprocessor  402 . An advantage of having a real-time clock  422  is that it provides the program with the actual time in real-time so that the programs executed by the medical infusion pump can track and control the actual time of day that drug delivery and other events occur. Various durations described here are used for alerts, alarms, reminders, and other functions. In one possible embodiment, the timers are formed by the real-time clock  422  and software executed by the microprocessor  402 . 
     A keypad  424  also provides input to the microprocessor  402 . Although other possible types of keypads are possible, one type of keypad has four buttons and is a membrane-type of keypad, which provides resistance to water and other environmental conditions. The keypad  424  contains soft keys for which the function of the keys can change as a user executes different menu selections and commands. 
     An audio bolus button  425  optionally provides input to the microprocessor  402 . The audio bolus button  425  can program the pump  400  to audibly administer a bolus of drugs or other therapeutic fluids without requiring visual confirmation using the pump. In an example embodiment, the audio bolus button  425  can be pressed a series of times to trigger bolus delivery of a selected volume, based on a preprogrammed trigger granularity. A single button press can represent a bolus of 5 grams, as selected by a user, and subsequent presses of the audio bolus button can represent multiples thereof. 
     Other inputs into the microprocessor  402  can include an occlusion sensor  426 , which is sensitive to occlusions in the therapeutic fluid delivery line; a cartridge sensor  428 , which is sensitive to the presence of a therapeutic fluid cartridge; and a motion detector  430 , which detects motion of a gear (not shown) in the drive mechanism  412 . In an exemplary embodiment, the cartridge sensor  428  includes one or more sensors configured to detect insertion of a therapeutic fluid cartridge. The pump  400  can detect the type of cartridge present via a mechanical interface, and can include in the pump software instructions regarding operation in conjunction with the cartridge. Examples of cassette sensing features are described, for example, in U.S. Pat. No. 5,531,697, filed on Apr. 15, 1994, issued on Jul. 2, 1996, and entitled Systems and Methods for Cassette Identification for Drug Pumps. 
       FIG. 5  illustrates a schematic architecture of a medical infusion pump network  500  according to an exemplary embodiment. The medical infusion pump network  500  includes an administrator computer  502  communicatively connected to the server  206  of  FIG. 2 , which includes a database  504 . The medical infusion pump network  500  also includes one or more medical infusion pumps  102  and computing systems  104 . 
     The administrator computer  502  and computing systems  104  are systems such as those described above in conjunction with  FIG. 3 . The administrator computer  502  includes administrative software installed on or accessible to the computer for generating one or more libraries  508  of pump protocols  510 . An exemplary embodiment of the administrative software is described below in  FIGS. 7-25 . 
     In the present disclosure, libraries refer to collections of pump protocols generated using the administrative software described herein. Libraries can be stored in files, databases, or other data structures. Libraries contain pump protocols as well as indices pointing to the protocols, and are loaded in user software to select a specific pump protocol for operation of a medical infusion pump. 
     The computing systems  104  include user software for accessing one or more libraries  508  of protocols  510  and programming a medical infusion pump  102  with a protocol  510  or a library  508 . In one possible embodiment, the computing systems  104  are optional in that the user software resides directly on the medical infusion pumps  102 . An exemplary embodiment of the user software is described below in  FIGS. 26-41 . 
     The medical infusion pumps  102  connect either to a computing system  104  or directly to the server  206 , and are described above in conjunction with  FIG. 4 . In a first embodiment, the medical infusion pumps  102  are configured to accept a pump protocol from the server  206  or the computing system  104 . In a second embodiment, the medical infusion pumps  102  are configured to accept a library  508  of pump protocols  510  directly from the server  206  or from the computing system  104 . 
     The database  504  contains pump protocol data  506  and log files  516 . The pump protocol data  506  forms a plurality of libraries  508  which in turn each include a number of protocols  510 . Each protocol  510  is stored as a data record, and includes a set of parameters, including patient specific pump parameters  512   a  and non-patient specific pump parameters  512   b , as described above. Each library  508  can contain one or more pump protocols  510 . 
     The log files  516  include log data regarding access and usage of the libraries  508 , and can include information related to the administrator computer  502 , the medical infusion pumps  102 , or the computing systems  104  authorized to connect to the server  206 . In one possible embodiment, the log files include access records, which record instances in which medical infusion pumps access a library  508  on the server  206 . 
       FIGS. 6A-6C  illustrate exemplary data sets accepted by medical infusion pumps  102 . The specific data set accepted by a medical infusion pump  102  is dependent upon that pump, but in various embodiments, the pumps accept data sets representing pump libraries, pump protocols, or pump programs.  FIG. 6A  shows a library  508  in greater detail. The library  508  can be loaded into the memory of a medical infusion pump  102 , allowing a user of the pump to select a protocol for operation. The library  508  includes a number of protocols  510 , which include patient specific pump parameters  512   a , non-patient specific pump parameters  512   b , and an index  514 . The number of protocols  510  within a given library can vary, and depends upon the number defined using the administrative software. 
     The total number of pump parameters  512   a - 512   b  remains constant for each particular model of pump, but can vary between types of pumps. Additionally, the pump parameters  512   a - 512   b  can be configured in a number of formats within each protocol  510  for the same type of pump. For example, the number of patient specific pump parameters  512   a  can vary between protocols due to the specific type of drug and therapy applied. For example, a protocol defining a continuous drug delivery may only require a single patient specific protocol, namely, the drug delivery rate. In another example, a protocol defining intermittent drug delivery may require additional patient specific pump parameters, such as the time between drug delivery phases, a bolus amount, patient bolus amounts, and other parameters. The number of non-patient specific pump parameters  512   b  represents the difference between the total number of parameters programmable into a pump and the number of patient specific pump parameters  512   a  as dictated by the therapy and drug applied. 
     The index  514  can be any generic index referencing a specific location within the library. Each index is unique within the library, although another library may contain the same index and relate that index to a different set of pump parameters contained within that library. In the exemplary embodiment shown, the index  514  includes therapy, qualifier, and drug regions. By selecting a combination of a therapy, a qualifier, and a drug, a user of the system can select one of the protocols  510  from the library  508 . Therapies, as referred to herein, are the methods of patient treatment for diseases or generalized rehabilitation. For example, a therapy can be an epidural treatment or patient-controlled analgesia. Qualifiers include factors affecting the administration of a therapy, such as weight, age, or sensitivity of a patient to a specific therapy. Drugs refer to any therapeutic fluids deliverable by a medical infusion pump. 
     Each of the protocol entries on the server can be assigned an identification code in order to ensure that the medical infusion pumps access a correct library and/or protocol, and that the protocols on the medical infusion pumps and computing systems associated with the server  206  of  FIG. 5  are up to date. These identification codes are generated by the server and stored in conjunction with the protocol in the server  206 , as well as in the medical infusion pump  102  and/or its associated computing system  104 . The identification codes can be generated using globally unique identifiers (GUID), and are used to track the specific protocol and/or library accessed by each pump  102  or computing system  104  in the database  504 . A GUID is a  128 -bit pseudo random number used to provide a statistically unique identifier for corresponding the protocol on the pump  102  to the protocol as stored in the server  206 . The GUID can be generated by the server  206  and transmitted alongside the protocol and/or library when transmitted to the computing system  104  or infusion pump  102 . The server copy of the GUID can be stored alongside the protocol in the database  504 , and the pump copy can be stored in RAM in the medical infusion pump  102  or computing system  104 . Each time the medical infusion pump  102  or computing system  104  accesses the protocol on the server  206 , the GUID assigned to that protocol as stored in the pump  102  or computing system  104  can be matched to the protocol as stored in the database  504  to ensure that the correct protocol is accessed. Different protocols in different libraries can use the same index of therapy, qualifier, and drug, and can be stored in the same database, but have a unique GUID and are therefore uniquely identifiable. In a possible embodiment, the GUID system can be used in conjunction with user access control systems, such as are disclosed in conjunction with both the user software and administrative software, below. In a further embodiment, a new GUID can be generated and associated with each protocol when first created, or optionally each time the protocol is edited using administrative software, such as is described below. 
       FIG. 6B  illustrates a second possible embodiment of a library  508 . The library  508  contains a number of protocols  510 , which, as in  FIG. 6A , include patient specific pump parameters  512   a , non-patient specific pump parameters  512   b , and an index  514 . The number of protocols  510  included in each library  508  may vary, so the number of protocols  510  in the library  508  of  FIG. 6B  may be different from the number of protocols in the library shown in  6 A. In the embodiment shown, the library  508  contains one protocol  510 . Additionally, one or more of the therapy, qualifier, and drug regions in the index  514  can be replaced by other index criteria, such as locations, pump programs, doctor identification, or other indexable criteria capable of referring to a unique pump protocol within the library. In the example shown, the “therapy” region is used to select a pump program, such as a continuous delivery program, an intermittent delivery program, or a specific type of program such as a pain management program. The “qualifier” region is used to select a doctor, and may be the name of a doctor using the infusion pump network of  FIG. 5 . 
       FIG. 6C  illustrates a series of possible pump protocols  510   a - 510   c . The pump protocols  510   a - 510   c  incorporate patient specific pump parameters  512   a  and non-patient specific pump parameters  512   b . Protocols  510  are specific to a pump  102 , in that the pump has a specific number and type of parameters that are programmable. Therefore, the total number of pump parameters remains constant. However, the number of patient specific pump parameters  512   a  can vary depending upon the protocol selected for programming into the pump, which in turn dictates that the number of non-patient specific pump parameters  512   b  varies as well. In a possible embodiment, one of the protocols  510  is selected using a computing system  104  or infusion pump  102 . If selected using the computing system, the protocol is then programmed into the medical infusion pump  102 . 
     In another possible embodiment, the pump protocol  510  is selected using the infusion pump  102  or the computing system  104 . The pump protocol  510  is then incorporated into a pump program to provide a set of instructions dictating the operation of a medical infusion pump  102  according to the protocol  510 . The complete pump program is then downloaded into the pump  102 . In yet another possible embodiment, the pump program is downloaded to the pump  102  at a different time from the pump protocol  510 . In still a further embodiment, multiple pump programs reside within the pump  102 , and the pump protocol  510  contains a parameter which dictates which pump program is to be used. In a further embodiment, the pump program within the pump is altered based on one or more of the pump parameters included in the pump protocol  510 . 
       FIG. 7  illustrates exemplary architecture of administrative software  700  for generating one or more libraries of pump protocols. The software  700  can operate within the server  206 , pump  102 , computing system  104 , or a combination thereof. 
     The administrative software  700  allows a user, for example a doctor, nurse, pharmacist, or other caregiver, to create, define, and edit pump application programs and protocols for execution in and control of medical infusion pumps  102 . For example, the administrative software  700  can generate protocols and programs that can be loaded using the user software described in  FIGS. 26-41 , below. 
     The administrative software  700  provides protocol-based programming of medical infusion pumps in which the user creates a pump application program by designating a particular therapy and other criteria such as a location and qualifiers (e.g., patient age, weight, skin surface area). Once criteria are selected, the administrative software  700  applies rules and other logic that assembles sets of pump parameters into a pump protocol. For example, the administrative software  700  might be used to select one delivery pattern and enable bolus delivery if the selected therapy is for delivering pain medication and another delivery pattern and not enable bolus delivery if the selected therapy is for parenteral nutrition. In another example, the administrative software  700  might be used to select one range of permissible delivery rates if one of the criteria indicates the patient is an adolescent and different range of permissible delivery rates if the patient is an adult. Other embodiments permit programming a medical infusion pump  102  without using therapy-based programming. Additional embodiments of protocol- or therapy-based programming is discussed in more detail in U.S. patent application Ser. No. 11/003,147, filed on Dec. 3, 2004 and entitled Programming Medical Pumps with Electronic Standing Order Template, the entire disclosure of which is hereby incorporated by reference. 
     Operation of the software  700  begins at a start module  702 . The start module  702  corresponds to initial execution of the administrative software by clicking on an icon on the computer or by some other mechanism for executing software. Upon startup, the software  700  connects to a library loaded in the database  504  of  FIG. 5 . 
     Following the start module, operational flow optionally proceeds to a load library module  704 , which allows a user to access a listing of library files available to the administrative software  700 . The library files contain one or more libraries, which in turn contain a collection of pump protocols as described above. The collection of library files can be stored in the server  206  or in one or more individual computing systems  102 . The load library module  704  allows the user to select a library file containing one or more libraries for viewing, editing, and downloading to a medical infusion pump  102 . If a user does not want to download or otherwise access an existing library, it can selectively bypass the load library module  704 . An example of when a user bypasses the load library module  704  is if the user plans to only create a new library or edit one or more protocols within the currently loaded library. In an alternative embodiment, the software always executes the load library module  704  and the user then selectively chooses whether to load any previously created libraries via a stored library file. 
     Following the start module  702  and optional load library module  704 , operational flow proceeds to a login module  706 . The login module  706  regulates user rights in the software  700 . User rights define access levels to the currently connected library in user software, and are configurable for users such as doctors, nurses, or other caregivers. Based on the user rights assigned to a caregiver, that user will have a set access level allowing the user to view, add, or edit pump libraries within the user software, described in detail below. Access levels can be set according to a variety of criteria. Examples include the type of caregiver (e.g., physician, nurse, pharmacist), location (e.g., hospital, clinic, pharmacy, manufacturer), or a particular department within a location. 
     In possible embodiments, different access levels also provide different rights with respect to a particular pump protocol or pump operational parameters. For example, one access level might give a user a right to edit, create, and download pump protocols and/or pump application programs. One access level might permit a user the right to edit, create, and download only specified pump parameters, such as the patient specific pump parameters described in conjunction with  FIGS. 5-6 . One access level might permit a user the right to only edit or download pump parameters. One access level might permit a user the right to only view and download pump parameters. Different embodiments can include the ability to provide an access level for a user any combination of rights to create, edit, view, and/or download pump application programs and/or pump operational parameters. An example of lock levels are disclosed in U.S. Pat. No. 6,475,180, issued on Nov. 5, 2002 and entitled Drug Pump Systems and Methods, the entire disclosure of which is hereby incorporated by reference. 
     Once the user is logged in and the library is optionally loaded, the user selectively executes three different modules, a library module  708 , a therapy module  710 , and a protocol module  712 . 
     The library module  708  assigns a label that identifies an entity and user attributes for the selected entity. Entity attributes can be properties specific to the library, such as a name of a doctor, a name of a healthcare regimen, or a location of the medical infusion pump or pump network, for example the hospital or department at which the pump is located. User attributes define the users allowed to access and modify pump parameters for protocols associated with a particular library by using the medical infusion pump, and can also define users allowed to modify pump protocols using user software, as described below. The library module  708  contains a library definition module  714  and a user rights module  716 , which are configured to perform these tasks, respectively. 
     The therapy module  710  adds and modifies therapies, qualifiers associated with the therapies, and drugs. The therapy module includes a therapy definition module  718 , a qualifier definition module  720 , and a drug definition module  722 . The therapy definition module  718  controls addition and editing of therapies, which are the methods of patient treatment for diseases or generalized rehabilitation as previously described. The qualifier module  720  defines qualifiers and associates the qualifiers with one or more therapies. The drug definition module  722  defines one or more drugs that can be used in the medical infusion pump. 
     The protocol module  712  adds, edits, and defines protocols by associating therapies, qualifiers, and drugs with pump parameters to form libraries of pump protocols for a medical infusion pump. The protocol module  712  allows a user to select a therapy defined in the therapy definition module  718 . The protocol module further allows the user to associate a qualifier defined in the qualifier definition module  720  with the selected therapy. For example, one or both of “adults” and “children 5-10 years” qualifiers can be associated with an epidural therapy. The protocol module  712  also associates one or more drugs with each therapy and qualifier combination, indicating that use of the drug is appropriate for that therapy and qualifier. The protocol module  712  guides the user in defining a protocol by assigning default pump parameters to be associated with the selected therapy, qualifier, and drug. 
     The protocol module  712  allows a user to associate more than one qualifier to each therapy, and also allows a user to associate more than one drug to each therapy and qualifier combination. For example, a protocol used in an epidural therapy for an adult can include a higher basal delivery rate parameter than a protocol used with a child for the same therapy. Likewise, usage of one drug can require a higher or lower dosage than another drug for the same therapy and qualifier because of concentration, reaction, or other factors. 
     Operational flow proceeds from the modules  708 ,  710 ,  712  to an optional export library module  724 . The export library module  724  saves the defined or edited pump application programs and parameters in a file or other data structure that can be loaded by the administrative software  700  at another time or location, or can be loaded by user software such as described below in  FIGS. 26-41 . If the export library module  724  does not execute, the library remains within the normally connected database  504  of  FIG. 5 , but is not extracted into a file for portability to a pump not connected to the network or to another medical infusion pump network. One or more libraries can be exported into a single library file. 
     Operation of the software  700  terminates at an end module  726 . The end module  726  corresponds to termination of the administrative software  700  by clicking on a close window button on the computer or by some other mechanism for terminating execution of software. 
     In one embodiment of the administrative software  700 , a user of the software  700  defines each protocol included in a library. In defining each protocol, the user assigns the index to the protocol, such as the therapy, qualifier, and drug defined in the modules  708 ,  710 ,  712  above. In a second possible embodiment, the administrative software includes a number of default settings or pump parameter modifications used when specific therapies, qualifiers, or drugs are selected. The user selects a therapy, qualifier, and drug to associate with a pump protocol. The administrative software  700  can include instructions dictating that selection of one or more of the therapies, qualifiers, and drugs sets or modifies one or more of the patient specific pump parameters or non-patient specific pump parameters. In one example of this second embodiment, a user setting a drug having a maximum safe consumption rate will trigger the administrative software  700  to preset an acceptable range of programmable delivery rates and a default delivery rate in the protocol, as well as alarms or other non-patient specific pump parameters. In another possible example of this second embodiment, a user setting a qualifier indicating a low age, such as “Children 5-10 years old”, will set or adjust the protocol to result in a low delivery rate and demand dose being incorporated into the protocol, and will set one or more parameters related to alarms for use in a medical infusion pump. 
     Referring now to  FIG. 8 , a library import screen  800  is shown. The library import screen corresponds to the load library module  704 , and is optionally used to load a library file containing one or more libraries of pump programs in the administrative software  700  of  FIG. 7 , above. The library import screen  800  includes a file selection field  802  and a password field  804 . The term field as used herein can include the window, or screen, generally, and can also include menus, selectable lists, or buttons within the window. 
     The file selection field  802  displays one or more library files that are available to be selected. The file selection field  802  allows a user to select one or more of the protocol library files, in conjunction with selection control buttons  806   a ,  806   b . The password field  804  controls access to the selected library file by requiring a user to input a correct password associated with the selected file, or library within the file. 
     A location field  808  presents the directory path of the selected library file and a browse button  810  provides browsing capabilities to allow a user to find a library file other than those displayed in the library selection field  802 . 
     In use, the library import screen  800  initially presents a listing of library files in the file selection field  802  available to the administrative software. The user selects one of the displayed library files, or presses the browse button  810  to search for additional library files. The user selects a library file by clicking on the displayed library file, or by other selection method. The directory path of the selected library file appears in the location field  808 , and the user then enters a password in the password field  804  corresponding to the selected library file. The user confirms the choice using the selection control buttons  806   a ,  806   b . The administrative software confirms that the user-entered password is correct, and accesses the library file. 
     Referring now to  FIG. 9 , a user interface  900  for the administrative software  700  of  FIG. 7  is shown. The user interface  900  includes features associated with the modules incorporated in the administrative software  700 , and corresponds to the screen displayed following the start operation  702  of  FIG. 7 . The user interface  900  includes a number of features providing global control and status information to a user. 
     Global control features included in the user interface  900  relate to library and pump access settings. A library field  902  provides a listing of libraries currently loaded by the software. The library field  902  contains the libraries which have been loaded using the load library module  704  of  FIG. 7 . A login button  904  generates a login screen that checks whether a user has the right to modify pump parameters and protocols. 
     The user interface  900  can display information related to the status of the network of medical infusion pumps. A database identification field  906  identifies the database  504  currently connected to the administrator computer  502 , as shown in  FIG. 5 . In additional exemplary embodiments, additional information can be displayed, such as the location of the server and/or medical infusion pumps connected to the infusion pump network or a serial number or other identification number of the pumps or libraries. 
     The user interface  900  also includes a location tab  920 , a therapy tab  940 , and a protocol tab  960 . Referring back to  FIG. 5 , the location tab  920  corresponds to the location module  708 , the therapy tab  940  corresponds to the therapy module  710 , and the protocol tab  960  corresponds to the protocol module  712 . By clicking on or otherwise selecting a tab, a user transfers operation to the module corresponding to that tab. 
     Referring now to  FIGS. 10-12 , the user interface  900  is shown, and location tab  920 , therapy tab  940 , and protocol tab  960  are described in greater detail.  FIG. 10  shows the user interface  900  after selection of the location tab  920 , or after initial execution of the login module  706  and optional load library module  704 . 
     A region of the location tab  920  supersedes the therapy tab  940  and protocol tab  960 . Within the region exposed by the location tab  920 , a library selected in the library field  902  populates a library description field  1002  and a user accounts field  1004 . The library description field  1002  describes the library that is currently loaded, and includes attributes of the location in which the library is used, or other information about the library. The location attributes can include the name of the hospital or the department in the hospital associated with the library. The additional information can include information related to the users of the library, the contents of the library, or other information. The library description field  1002  corresponds to the location attributes module  714  of  FIG. 7 . The user accounts field  1004  displays a listing of user accounts associated with the library. Each of the user accounts generally correspond to a user, but can also correspond to a location of a computing system  104  or medical infusion pump  102 . The user accounts define the persons allowed to access and modify pump protocols, and/or parameters associated with the library at the point of care, such as a medical infusion pump  102  or computing system  104  executing user software. The user accounts field  1004  enables a user to add, edit, or delete users from the listing using the buttons  1006   a - 1006   c  provided. The user accounts field corresponds to the user rights module  716  of  FIG. 7 . 
     In a possible embodiment, a log report field  1008  can optionally direct the server  206  to generate a record for various events occurring in the database  504 . For example, a log report can be created each time a protocol is sent to a medical infusion pump  102 . Alternately, a log report is created each time a library is sent to a medical infusion pump  102 . In further embodiments, a log report is created each time a library is edited or accessed. In still further embodiments, globally unique identifiers are entered into the log report related to instances where computing systems  104  and/or infusion pumps  102  access a library in the database  504 . In the embodiment shown, the log report field  1008  is a selectable check box, but can be implemented as any other type of selectable field. 
     A password field  1010  sets a password for the currently selected library file. The password protects access to the library from the perspective of user software residing on either a computing system  104  or an infusion pump  102  such that only users with knowledge of the password associated with the library file can load the library using the load library module  704  of  FIG. 7  and user interface  800 . 
     Referring now to  FIG. 11 , the user interface  900  is shown with the therapy tab  940  selected. A region of the therapy tab  940  supersedes the location tab  920  and the protocol tab  960 . The therapy tab  940  corresponds to the therapies module  710 , which defines therapies, qualifiers, and drugs used by medical infusion pumps associated with the administrative software  700  of  FIG. 7 . The therapy tab  940  includes a therapy definition field  1102 , a qualifier definition field  1104 , and a drug definition field  1106 . 
     The therapy definition field  1102  corresponds to the therapy definition module  718  of  FIG. 7 , and includes a therapy listing  1108 , a therapy notes field  1110 , and control buttons  1112   a - 1112   c . The therapy listing  1108  displays the therapies currently defined in the library displayed in the library listing  802 . Two example therapies, “Patient Controlled Analgesia” and “Epidural”, are shown in the therapy listing  1108 , and are associated with a library named “NeoNatal Intensive Care Unit”. The therapy notes field  1110  contains administrative user-defined notes related to the therapy selected in the therapy listing  1108 . The notes relate to a therapy, and include information related to administration of the therapy, such as messages related to dosage, bolus amount, or administration. The therapy notes field  1110  presents administrative user-created notes to convey therapy-specific information to caregivers using or programming the pump. Control buttons  1112   a - 1112   c  allow a user to add, edit, and delete therapies from the therapy listing  1108  and therapy notes field  1110 . 
     The qualifier definition field  1104  corresponds to the qualifier definition module  720  of  FIG. 7 , and includes a qualifier listing  1114 , a qualifier notes field  1116 , and control buttons  1118   a - 1118   c . The qualifier definition field  1104  lists the qualifiers associated with the therapy selected from the list shown in the therapy listing  1108 . For example, an administrative user might add a “Children 5-10 yrs” entry to the qualifier listing  1114 . Each therapy relates to one or more qualifiers, such as a general qualifier, a weight based qualifier, or an age based qualifier. The qualifier notes field  1116  contains notes describing the difference in application of the therapy based on the qualifier selected. In the case of the “Children 5-10 years” qualifier, the qualifier notes field  1116  can indicate a lower than normal dosage to be administered. Notes associated with the qualifier display in the qualifier notes field  1116  only when the qualifier is selected. 
     The drug definition field  1106  corresponds to the drug definition module  722  of  FIG. 7 , and includes a drug listing  1120  and control buttons  1122   a - 1122   d . The drug listing  1120  includes information related to the therapeutic fluid used in the medical infusion pump. This information can include the drug name, identification code, units, concentration, and usage. The control buttons  1122   a - 1122   c  allow a user to add, edit, or delete drugs in the drug listing  1120 . A bar code control button  1122   d  generates a bar code screen including information related to a drug. 
     Referring now to  FIG. 12 , the user interface  900  is shown with protocol tab  960  selected. The protocol tab  960  supersedes the location tab  920  and the therapy tab  940 . The protocol tab  960  corresponds to the protocol module  712  of  FIG. 7 , and associates therapies, qualifiers, and drugs to allow a user to define protocols by setting pump parameters for inclusion within pump programs. The protocol tab  960  includes a protocol field  1202  and control buttons  1204   a - 1204   e . The protocol field  1202  lists the combinations of therapies, qualifiers, and drugs for which a protocol is defined. The protocol field  1202  also lists a pump type  1203  for which each protocol is defined. By specifying a pump type for which each protocol is defined, it is possible to enable pump-specific protocol programming, while still using the administrative software  700  and user software, described below, for all pump types configurable using the protocol-based programming scheme described herein. 
     The control buttons  1204   a - 1204   e  operate to add, edit, view, and/or delete the protocol for the combinations of therapies, qualifiers, and drugs. The control buttons  1204   a - 1204   d  allow a user to set pump parameters so as to define the protocol. Control button  1204   e  generates a prescription form screen representing the protocol for the selected therapy, qualifier, and drug. 
       FIG. 13  shows a bar code screen  1300  displaying a bar code for a drug defined in the administrative software  700  of  FIG. 7 . A drug identification code is associated with each drug in the drug listing  1120  of  FIG. 11 . A drug is selected from among those in the drug listing  1120  of  FIG. 11 , and the bar code screen  1300  displays upon clicking on the control button  1122   d.    
     The bar code screen  1300  includes a print preview field  1302 , a printer drop down menu  1304 , a label information menu  1306 , a copies drop down menu  1308 , and control buttons  1310   a - 1310   c . The print preview field  1302  displays a bar code associated with the selected drug. The printer drop down menu  1304  lists available printers configured to print the bar code. The label information drop down menu  1306  defines the label configuration to which the bar code is directed. The label configuration includes, for example, the size and layout of the label paper. The copies drop down menu  1308  dictates the number of copies of the bar code that are printed. Control buttons  1310   a - 1310   c  provide printing, cancellation, and help procedures to a user. 
     In use, the bar code corresponds to a drug identification code associated with the drug. In a possible embodiment, a pharmacist can print the barcode associated with the drug using the administrative software  700  via the bar code screen  1300  and affix the printed bar code label to the drug container. The labels indicate the drug and dosage being delivered by the pump. This provides an easily accessible and visually prominent indication of the drug being delivered by a medical infusion pump. 
     A caregiver connecting a drug to a medical infusion pump  102  will scan the bar code on the drug container, which will correspond to the drug identification code associated with the drug in the administrative software  700 . This ensures that the caregiver affixes the drug to the pump which corresponds to the protocol selected using administrative software  700 . 
       FIG. 14  shows a prescription form screen  1400  displaying prescription information related to a specific therapy, qualifier, and drug. The prescription form screen displays upon selection of control button  1204   e  on protocol tab  960 . The prescription form screen  1400  corresponds to the currently selected protocol, and therefore incorporates information specific to the selected protocol. Prescription information includes, for example, directions for application of the drug according to the defined protocol, and parameters such as drug delivery rates or bolus amounts. The prescription form also includes usage notes describing operation or application of the selected therapy, qualifier, and drug. 
     A doctor using the prescription form dictates the protocol used in the pump by using a prescription form analogous to the prescription form screen. The prescription form  1400  generated by the administrative software will correspond to the prescription form completed by the doctor. In the embodiment shown, the prescription form screen  1400  that is generated includes information specific to the drug and therapy administered, which may be notes related to administration of the drug and therapy as dictated by the doctor. For example, the prescription form will include drug information, such as the name, type, concentration, and notes regarding the drug, and will also include information related to patient specific pump parameters associated with a selected therapy, qualifier, and drug selected from a library. 
     Referring now to  FIG. 15-17 , a protocol definition user interface  1500  defines the relationships between the therapies, qualifiers, and drugs added to the library by the therapy module  710  and using the therapy tab  960 . A user defines a protocol by setting an index by sequentially selecting a therapy, a qualifier, and a drug, and then by associating pump parameters with that index. In setting the index using the user interface  1500 , a therapy drop down menu  1502  connects to a therapy notes field  1504 , a qualifier drop down menu  1506  connects to a qualifier notes field  1508 , and a drug drop down menu  1510  connects to a drug notes field  1512 . 
       FIG. 15  shows the initial state of the protocol definition user interface  1500 . A list of therapies appears in the therapy drop down menu  1502 , while the remaining menus  1506 ,  1510  and fields  1504 ,  1508 ,  1512  remain blank. 
       FIG. 16  shows the state of the protocol definition user interface  1500  after a therapy is selected in the therapy drop down menu  1502 . Notes related to the selected therapy appear in the therapy notes field  1504 , and a list of qualifiers associated with the selected therapy appears in the qualifier drop down menu  1506 . The notes correspond to the therapy notes entered in the therapy notes field  1110 . The list of qualifiers corresponds to the qualifiers associated to the therapy by listing in the qualifier listing  1114 . For example, two qualifiers, “Adults &amp; Children over 5 yrs” and “Children 3-5 yrs” can be associated with the “Patient Controlled Analgesia” therapy. When that therapy is selected in the therapy drop down menu  1502 , the two associated qualifiers populate the qualifier drop down menu  1506 . 
       FIG. 17  shows the state of the protocol definition interface  1500  after a qualifier is selected in the qualifier drop down menu  1506 . Notes related to the qualifier appear in the qualifier notes field  1508 , and a list of drugs available within the library or database appears in the drug drop down menu  1510 . The notes correspond to changes in the therapy due to the qualifier selected. Continuing the example from  FIG. 14 , the “Adults &amp; Children over 5 yrs” qualifier is selected. Notes related to customization of the “Patient Controlled Analgesia” therapy based on the selected qualifier are displayed in the qualifier notes field  1508 . Furthermore, a list of four drugs/drug concentrations appear in the drug drop down menu  1510 , which are the drugs defined and available within the library or database. 
     Analogously, upon selection of a drug from the drug drop down menu  1510 , drug notes (not shown) appear in the drug notes field  1512 . 
     Referring now to  FIGS. 18-24 , a parameter user interface  1800  provides additional tabbed screens allowing a user to define pump parameters. The pump parameters complete the protocol definition associated with the therapy, qualifier, and drug combination selected in  FIGS. 15-17 . As described in conjunction with  FIG. 7 , selection of the index defined by a therapy, qualifier, and drug using the protocol definition interface  1500  may trigger the administrative software  700  to set or modify one or more of the pump parameters. Alternately, none of the pump parameters are set during the definition and selection of the index formed by the therapy, qualifier, and drug using the protocol definition interface  1500 . In such an embodiment, the parameter user interface  1800  is used to define the pump parameters that are programmable into a medical infusion pump. 
     The parameter user interface  1800  includes a status region  1802 , a protocol activation field  1804 , and control buttons  1806   a - 1806   c . The status region  1802  displays the therapy, qualifier, and drug associated with the assignable pump parameters. The protocol activation field  1804  publishes the protocol within the library such that the protocol is visible to user software accessing the library when it resides within the database  504  of  FIG. 5 . The protocol activation field  1804  allows a user of the administrative software  700  to control when protocols become available for use by user software. In some circumstances, it can be advantageous to prevent user software from accessing data, particularly while that data is being edited in the administrative software  700 . One example of user software used to access pump protocols is illustrated below in conjunction with  FIGS. 26-41 . The control buttons  1806   a - 1806   c  provide save, cancel, and help options to a user of the administrative software. 
     The parameter user interface  1800  further includes a number of tabs, including a drug delivery tab  1810 , a secondary drug delivery tab  1820 , an alarm tab  1830 , a security tab  1840 , a display/sound tab  1850 , and a report tab  1860 . Parameters set within each of the tabs are discussed in  FIGS. 18-24 . 
       FIG. 18  shows the parameter user interface  1800  with the drug delivery tab  1810  selected. The drug delivery tab  1810  allows a user to set drug delivery rate parameters, and includes a general settings region  1812  and a patient specific parameters region  1814 . 
     The general settings region  1812  includes verification settings  1816  and weight based settings  1818 . The verification settings  1816  includes drug verification and caregiver verification settings. Specifically, the verification settings require that a caregiver verifies that the correct drug is provided to the medical infusion pump. The verification settings also require a second caregiver to verify the settings of the medical infusion pump. The weight based settings  1818  set a weight based protocol at a programmable, variable weight limit. By weight based protocol, it is intended that dosage delivery rates, boluses, thresholds, and other delivery parameters change from a “dosage per hour” basis to a “dosage per weight factor” rate, where the weight factor can be on a per unit measure weight basis for the user of the medical infusion pump  102  (i.e. “per kilogram” or other), or based on the user&#39;s body surface area, a weight based therapy, or other options. 
     The patient specific parameters region  1814  includes a continuous rate region  1822 , a demand dose region  1824 , and a demand dose lockout region  1826 . Continuous rate refers to the constant drug delivery rate of the medical infusion pump, also referred to as the basal rate. Demand dose refers to an added drug delivery bolus amount delivered by the pump upon a demand by a patient. Demand dose lockout refers to the time interval after a demand dose is delivered, during which another demand dose will not be delivered by the pump. 
     The continuous rate region  1822  includes a meter, shown as a slider bar  1828  and an indicator  1829 . The meter generally has two or more locations, each corresponding to a parameter value that can be programmed in the medical infusion pump. Generally, the positional relationship of the meter indicates the setting of the meter. In a possible embodiment of the slider bar  1828  shown, the indicator  1829  is movable relative to the slider bar  1828  to set a default value, or “initial value” continuous drug delivery rate parameter. In a second possible embodiment, the default value is set using an initial value gauge  1832 . 
     The continuous rate region also includes hard limit gauges  1834 , soft limit gauges  1836 , and user interface options  1838   a - 1838   c . The initial value gauge  1832 , hard limit gauges  1834 , and soft limit gauges  1836  include values, which may include numerical ranges. The hard limit gauges  1834  set a hard maximum and hard minimum which form an acceptable pump programming range. The range of acceptable pump activity represents the absolute maximum and minimum values programmable into the pump by user software, as described below. This configuration allows for control of the range of values visible to a user of the medical infusion pump or associated computing system. 
     The limits set by the soft limit gauges  1836  represent a manually exceedable threshold value. The soft limit can be overridden by a user of a medical infusion pump on a pump-by-pump basis. Pump activity outside the range defined by soft limits can trigger an alarm or otherwise alert a caregiver that a pump is functioning outside of the usual operational range of the pump. A variety of alarm levels or alerts can be set by the soft limit gauges  1836 . For example, the alert can be a flag set in the software. The alert could additionally be an audible alarm, or a visual indicator displayed on at least a portion of the medical infusion pump. The visual indicator could be a flashing indicator or changed/changing color on the display of the medical infusion pump. 
     In a second possible embodiment, the hard limit gauges set a non-limiting range, and the user software described below can be programmed within its full operational range. In such an embodiment, pump activity outside the range set by the hard limit gauges  1834  can trigger an alarm or otherwise alert a caregiver that a pump is functioning outside of the usual operational range of the pump. In this embodiment, the soft limit gauges  1836  set a narrower range, operation outside of which can trigger a warning or second alarm indicating pump activity outside of an expected range of pump operation. This warning or second alarm indicates a pump condition less serious than the alarm triggered by the hard limits. 
     The user interface options  1838   a - 1838   c  enable the user software to display and edit the delivery rate, editing of the delivery rate, and requiring comments by users of a pump who wish to exceed the soft limits when setting the drug delivery rate. Selection of the display option  1838   a  publishes the pump parameter so that the value is visible to a user of the pump or computing system. 
     The demand dose region  1824  includes a slider bar  1842  and an indicator  1843 . The slider bar and indicator operate in a similar manner to the slider bar  1828  and indicator  1829  in the continuous rate region  1822 , but control demand dose settings. Likewise, the demand dose region  1824  includes an initial value gauge  1844 , as well as hard limit gauges  1846  and soft limit gauges  1848  setting visible thresholds and triggering alarms as in the continuous rate region  1822 . Demand dose options  1852   a - 1852   c  provide analogous display, editing, and comment options to the user interface options  1838   a - 1838   c.    
     The demand dose lockout region  1826  includes a slider bar  1854  and an indicator  1855 , and also includes an initial value gauge  1856 , hard limit gauges  1858 , and soft limit gauges  1862 . Each of these features functions analogously to those discussed above in conjunction with the continuous rate region  1822 . The demand dose lockout region also includes lockout options  1864   a - 1864   c  analogous to the user interface options  1838   a - 1838   c.    
       FIG. 19  shows the parameter user interface  1800  with the drug delivery tab  1810  modified to provide a weight based drug delivery protocol. The modification of the user interface  1800  occurs in the drug delivery tab  1810  upon user selection of the weight based settings  1818  discussed in  FIG. 18 . The continuous rate region  1822  and demand dose region  1824  are modified to reflect dosage rates on a “per kilogram” or other weight measure basis. 
       FIG. 20  shows the parameter user interface  1800  with the secondary drug delivery tab  1820  selected. The secondary drug delivery tab  1820  provides additional medical infusion pump programming options for assigning pump parameters in a specific protocol. The secondary drug delivery tab  1820  includes a dosing limit region  2002 , a patient specific parameter region  2004 , a titration region  2006 , a maximum delivery rate gauge  2008 , and a maximum clinician bolus gauge  2010 . 
     The dosing limit region  2002  displays limits for total drug delivery within a specified amount of time. The dosing limit region  2002  includes options for setting a limit on doses per hour, a timed medication delivery limit, or other limits. A user selects one of the options for setting the dosage limit. 
     The patient specific parameter region  2004  sets parameters related to the dosage limits coordinated to the options in the dosing limit region  2002 . The patient specific parameter region  1804  includes a timed delivery limit region  2012 , an hourly demand doses region  2014 , and a reservoir region  2016 . 
     The timed delivery limit region  2012  sets the delivery limit on a per assigned time period when the option for setting a limit on doses per hour is selected in the dosing limit region  2002 . The timed delivery limit region  2012  includes a meter, shown as a slider bar  2018  and indicator  2019 . The timed delivery limit region  2012  also includes an initial value gauge  2020 , hard limit gauges  2022 , soft limit gauges  2024 , and control options  2026   a - 2026   c . Operation of the slider bar  2018 , indicator  2019 , gauges  2020 - 2024 , and control options  2026   a - 2026   c  is analogous to operation of the slider bar features as discussed in conjunction with  FIG. 18 , above. 
     The hourly demand doses region  2014  sets the delivery limit on a per hour basis when the doses per hour limit is selected in the dosing limit region  2002 . The maximum demand doses region  2014  includes a slider bar  2028 , indicator  2029 , gauges  2030 - 2034 , and control options  2036   a - 2036   c , operation of which is likewise analogous to operation of the slider bar features discussed in  FIG. 18 . 
     The timed delivery limit region  2012  and hourly demand doses region  2014  are operated in the alternative, in that only one of the two regions is active at one time. The region that is active depends upon the option selected in the dosing limit region  2002 . Selection of a timed delivery limit in the dosing limit region  2002  activates the timed delivery limit region  2012  and deactivates the hourly demand doses region  2014 . Selection of an hourly delivery limit activates the hourly demand doses region  2014  and deactivates the timed delivery limit region  2012 . 
     The reservoir region  2016  sets the initial volume settings and display settings for tracking the volume of fluid in the reservoir attached to the medical infusion pump. The reservoir region  2016  includes a meter, shown as a slider bar  2040  and indicator  2041 , operation of which is analogous to the slider bar and indicator discussed in conjunction with  FIG. 18 . The reservoir region further includes an initial value gauge  2042 , a disable option  2044 , and control options  2046   a - 2046   b . The initial value gauge  2042  provides an alternate method for setting the initial value of the reservoir volume to the slider bar  2040  and indicator  2041 . The disable option  2044  disables the reservoir volume monitor. The control options  2046   a - 2046   b  provide display and edit capabilities to a user of the pump. 
     The remaining regions, i.e. the titration region  2006 , the maximum deliver rate gauge  2008 , and the maximum clinician bolus gauge  2010 , set pump specific settings related to drug delivery limits. The titration region  2006  enables or disables titration in the medical infusion pump, and sets an optional titration limit in the pump. The maximum delivery rate gauge  2008  sets a maximum delivery rate for the infusion pump. The maximum delivery rate is measured in milliliters per hour, and includes both the basal delivery rate and bolus delivery. The maximum clinician bolus gauge  2010  sets the maximum bolus which can be delivered by a caregiver. The maximum clinician bolus may be a larger bolus than the standard patient-controlled bolus, but must be administered under the supervision of a caregiver. Other regions can be included in the tab  1820  as well. 
       FIG. 21  shows the parameter user interface  1800  with the alarm tab  1830  selected. The alarm tab includes a number of regions used for maintenance and hardware-related alarms, as opposed to the drug delivery threshold alarms discussed above in conjunction with the slider bars. The alarm tab  1830  allows the user to enable and disable alarms in the medical infusion pump. The alarm tab  1830  includes a reservoir low alarm region  2102 , a reservoir empty alarm region  2104 , a pump stop alarm  2106 , a maintenance alarm  2108 , and a hardware alarm  2110 . The reservoir low alarm region  2102  provides an alarm indicator when a drug supply volume falls below a threshold level. The threshold level can be a standard level or an administrative user-set volume level. The reservoir empty alarm region  2104  sets a single occurrence or repeating alarm when a drug supply volume falls below a threshold level. The pump stop alarm  2106  sets an alarm which occurs when the medical infusion pump stops operating. The maintenance alarm  2108  enables a maintenance alarm, which alerts a user when maintenance is needed. The hardware alarm  2110  provides options for detection of optional components used with the infusion pump. For example, the hardware alarm  2110  can trigger upon detection of an air detector or other component. The pump hardware detector region  2110  can provide the option of enabling an alarm sent to a caregiver. 
       FIG. 22  shows the parameter user interface  1800  with the security tab  1840  selected. The security tab  1840  includes options related to security of the medical infusion pumps. The security tab  1840  includes a security region  2202  and an epidural region  2204 . The security region  2202  presents a number of security options for controlling access to each medical infusion pump. Security options can include an automatic lock, a lock code, clinician code, and an initial lock level. The epidural region  2204  selectably places the pump into a mode configured for epidural therapy. 
       FIG. 23  shows the parameter user interface  1800  with the display/sound tab  1850  selected. The display/sound tab  1850  includes options related to the display and sound settings for each medical infusion pump. The display/sound tab  1850  includes an auto-review option  2302 , a main display region  2304 , a units option  2306 , a date format option  2308 , a send protocol region  2310 , and a sound region  2312 . The auto-review option  2302  enables a power-up display of options in the medical infusion pump. The main display region  2304  presents a number of programmable fields that will, by default, be displayed on the medical infusion pump. For example, the main display region  2304  includes programmable text display entry, power source information, and drug delivery rate. Other display options related to properties of the medical infusion pump are available as well. The units option  2306  selectably assigns a units location for display on the medical infusion pump. The date format option  2308  assigns date formats for displaying on the medical infusion pump. The send protocol region  2310  sets one or more patient markers or date/time stamps in the infusion pump network upon distribution of programming instructions to the medical infusion pump. The sound region  2312  enables sound in the medical infusion pump, such as beeping sounds when one or more keys/key sequences are depressed. 
       FIG. 24  shows the parameter user interface  1800  with the report tab  1860  selected. The report tab  1860  presents options for displaying reports by a medical infusion pump related to events occurring in the pump. The report tab  1860  includes a new patient marker region  2402  and a custom report region  2404 . The new patient marker region  2402  includes a list of options to perform related to report generation upon association of a medical infusion pump with a new patient. For example, the new patient marker region  2402  includes a number of report-clearing options and power-on options to be performed when a medical infusion pump is assigned to a new patient. The custom report region  2404  provides a number of selectable options for display in a custom report regarding events tracked in the medical infusion pump network. The custom report region  2404  provides all of the options tracked in the infusion pump network  500 , which can be stored in the log files  516 . A user selects one or more of the options to generate a report. For example, the custom report region  2404  can include dose counters, doses per hour, pain scale information, drug delivery information, an event log, and a patient marker. The report generated by the custom report region  2404  options displays on the screen of the medical infusion pump  102  or computing system,  104 . Both the new patient marker region  2402  and the custom report region  2404  can include additional options as well. 
     Referring now to  FIG. 25 , a library export screen  2500  is optionally used to save the pump parameters and protocols for exporting from the database  504  of  FIG. 5 . One or more libraries are exported using the library export screen  2500 , including all of the pump protocols, and containing all of the defined therapies, qualifiers, drugs, and combinations thereof. The library export screen  2500  corresponds to the export library module  724  of  FIG. 7 , and provides file extraction, in that one or more protocol libraries built using the administrative software  700  are exported to a data file or database. The export library screen  2500  includes a library field  2502  and an export option region  2504 . The library field  2502  displays a number of libraries available to the system that can be exported to a portable file. The export option region  2504  provides export options to the administrative user seeking to export the library data to a file. For example, export options can include creating a read-only file, or a read-write template for use in another instantiation of the software system disclosed herein. The read-only file might be selected in the case that the library is to be loaded onto a medical infusion pump that is disconnected from the database  504  of  FIG. 5 . The read-write file might be selected if the library is to be transferred to a separate infusion pump network  500  altogether, in which administrative software on that subsequent infusion pump network may be used to subsequently edit that library. Additionally, the export option region  2504  includes an assignable password to add security to the library file exported such that a user attempting to access the protocols contained in the library file must know and enter the correct password. 
     The above description and figures corresponding to the administrative software  700  provides a therapy-centric programming schema for a medical infusion pump. For example, a certain drug used in conjunction with a medical infusion pump may be appropriate for use with a specific therapy for an adult, but may not be appropriate for the same therapy for a child. Certain drugs may only be appropriate in certain therapies, and under certain qualifying conditions. Pump parameters are initially set according to the protocols defined in the administrative software  700 , but are customizable on a pump-by-pump basis using user software associated with a specific pump and/or patient. 
       FIG. 26  illustrates exemplary architecture of user software  2600  for accessing a pump application program and programming a medical infusion pump. The software  2600  can operate within the pump  102 , computing system  104 , or a combination thereof. The user software  2600  allows a user, for example a doctor, nurse, pharmacist, or other caregiver, to select and customize pump application protocols, and parameters for execution in and control of a medical infusion pump  102 . Depending upon the pump configuration, the user may select a protocol or a library for loading into a medical infusion pump. Additional data structures could be loaded into the medical infusion pump as well. Although the user software  2600  is discussed in conjunction with the administrative software  700  previously described in  FIGS. 7-25 , it is understood that the user software systems described herein are operable in conjunction with additional hardware/software embodiments. 
     The medical infusion pumps as described store pump data in memory, such as the memory shown above in  FIG. 3 . The pump data can include pump parameters, parameter values, programs, and other functional and data systems configured to operate the medical infusion pump. As referred to herein, a set of pump parameters can include the entire memory contents of the pump, or can include a subset of the memory contents, such as selected data values, that can be altered to change operation of the pump. 
     The user software  2600  is instantiated by a start module  2602 . The start module  2602  corresponds to initial execution of the user software  2600  by clicking on an icon on the computer or by some other mechanism for executing software. Upon execution of the start module  2602 , the user software  2600  connects to a library on a server  206  containing one or more pump protocols. 
     Following the start module  2602 , operational flow optionally proceeds to a library import module  2604 . The library import module  2606  provides the ability to import one or more libraries into the software  2600 . This feature can be used by a computing system  104  or medical infusion pump  102  that is not connected to the same medical infusion pump network  500  as the database storing the library  504 . If the computing system  104  or medical infusion pump  102  is connected to the medical infusion pump network  500 , each component is by default connected to the server  206  and database  504 . 
     The libraries available to be imported include pump protocols and parameters, and may have been created using the administrative software of  FIGS. 7-25 . The collection of pump protocols can be accessed from the server  206  or in one or more individual computing systems  102 . The library import module  2604  allows the user to select one or more pump application programs for downloading to a medical infusion pump  102 . 
     Once connected to the desired library either by default or via the library import module  2604 , operational flow proceeds to a login module  2606 . The login module  2606  regulates user rights in the software  2600  by controlling access to the libraries  508  in the database  504  of  FIG. 5 . User rights define access levels in the software for users such as doctors, nurses, other caregivers, or patients. A user will have a set access level allowing the user to view or edit pump application protocols and parameters within the user software  2600 . Access levels are set using the user rights module  716  of the administrative software  700 , described above in conjunction with  FIG. 7 . Access levels can be set by a user of the administrative software  700  according to a variety of criteria, such as the type of caregiver (e.g., physician, nurse, or pharmacist). 
     Different access levels also can provide different rights with respect to pump operational parameters. For example, one access level might give a user a right to edit patient specific pump parameters. One access level might permit a user the right to only view and download the patient specific pump operational parameters. Different embodiments can include the ability to provide an access level for a user any combination of rights to edit, view, and/or download pump operational parameters, protocols, or libraries. 
     Once the user is logged in, the user selectively executes three different modules, a protocol selection module  2608 , a task module  2610 , and a report module  2612 . 
     The protocol selection module  2608  selects a protocol for use with a medical infusion pump from the protocols loaded in the user software  2600 . The protocol selection module  2608  guides the user through selection of a therapy, qualifier, and drug combination defined to be a protocol by the administrative software. The protocol selection module  2608  includes a therapy selection module  2614 , a qualifier selection module  2616 , and a drug selection module  2618  for this purpose. The therapy selection module  2416  selects a therapy to be administered by the drug infusion pump  102 . The therapy is one of the therapies included in the library selected in the library import module  2606 . The qualifier selection module  2616  selects a qualifier from those associated with the therapy in the library. The drug selection module  2618  selects a drug associated with the therapy and drug. The protocol selection module  2608  further allows customization of the protocol by allowing a user to modify pump parameters, such as the drug delivery rate, the demand dose, the demand dose lockout, drug delivery limits, and reservoir volume. 
     The task module  2610  guides a user through maintenance and monitoring tasks that are required for each medical infusion pump  102 . These maintenance and monitoring tasks can include pump settings comparison and testing, as well as changing the reservoir holding the drug delivered by the medical infusion pump  102 . The task module  2610  includes a pump settings module  2620 , a comparison module  2622 , and a reservoir module  2624 . The pump settings module  2620  compares the local pump settings to a standing order set for the pump, for example by a caregiver who programmed or customized the medical infusion pump. During operation of the pump settings module  2620 , the user software  2600  receives a GUID specific to a protocol and generated by the server  206 , and stores the GUID on the pump or computing system. The GUID generated by the server and stored on the pump or computing system is made available to the server when the pump or computing system accesses the library to look up and verify the future access of the correct protocol and/or library. This ensures that the pump settings are compared to the correct protocol stored on the server. The comparison module  2622  compares the local pump settings to a protocol, such as the protocols defined using the administrative software  700 . The reservoir module  2624  determines if a drug reservoir is nearly empty and guides a patient or caregiver through the drug cartridge changing process occasionally required during use of a medical infusion pump. 
     The report module  2612  generates a report from preexisting logged information for a selected medical infusion pump  102 . The report module includes a location module  2626  and a type module  2628 . The location module  2626  requests the location of the pump from which a report is generated, such as a specific pump or a previously saved report stored on the pump or computing system. The type module  2628  presents a number of types of reports which can be generated from the logged information, such as a drug delivery report or event log, and can display the report responsive to a user request. 
     Operation of the software terminates at an end module  2630 . The end module  2630  corresponds to termination of the administrative software  2600  by clicking on a close window button on the computer or by some other mechanism for terminating execution of software. 
       FIG. 27  shows a library import screen  2700  used to optionally load a library of pump protocols into the user software  2600 . The library import screen  2700  corresponds to the login module  2604 , and presents a location field  2702  and a library field  2704  used to browse to and select a library from a library database or file. An optional password field  2706  accepts user input to allow the user to enter a password for accessing a password protected library file, such as one created using the export library screen shown in  FIG. 25 . Control buttons  2708   a - 2708   b  provide confirmation and cancellation options to the user, allowing the user to complete the library access process. 
       FIGS. 28-32  illustrate an exemplary process and user interface through which the protocol selection module  2608  leads a user to select a protocol for use with a medical infusion pump. The methods, systems and user interfaces described in conjunction with  FIGS. 28-32  can be performed either on a computing system, such as a computing system  104  associated with a medical infusion pump  102 , or on a medical fusion pump  102  configured to accept a library of pump protocols directly. Medical infusion pumps  102  accepting a single pump protocol use a corresponding computing system  104 . 
     Referring to  FIG. 28 , operation of the protocol selection module  2608  is instantiated by a start module  2802 . The start module  2802  corresponds to initial execution of the user software  2600 , or initial selection of the protocol selection module  2608  by clicking on an icon or tab on the computer or by some other mechanism for executing software. 
     Following the start module  2802 , operational flow proceeds to a load protocols module  2804 . The load protocols module  2804  populates the user software  2600  with the protocols from the loaded library. For example, the load protocols module  2804  can populate a listing of protocols for selection using the user software  2600 . 
     Following the load protocols module  2804 , operational flow proceeds to a select protocol module  2806 . The select protocol module  2806  selects a protocol from among the protocols loaded into the user software  2600  by guiding a user through selection of a therapy, qualifier, and drug defining one of the protocols loaded in the software  2600 . The select protocol module  2806  corresponds to the therapy selection module  2614 , qualifier selection module  2616 , and drug selection module  2618  shown in  FIG. 26 . 
     Following the select protocol module  2806 , operational flow proceeds to a settings module  2808 . The settings module  2808  provides editing and customization of the pump parameters assigned to a medical infusion pump as dictated by the protocol selected by the user. The parameters include, for example, the drug delivery rate, demand dose rate, or demand dose lockout. 
     Following the settings module  2808 , operational flow proceeds to an optional pump programming module  2810 . The pump programming module  2810  programs a medical infusion pump with the settings both as defined by the protocol and selected by the select protocol module  2806 , and as customized by the settings module  2808 . The pump programming module  2810  executes if the user software  2600  resides on a computing system  104  connected to a medical infusion pump  102 . The pump programming module may not execute if the software  2600  resides on the medical infusion pump  102  itself, because the protocols are already loaded into the pump alongside the library accessed by the user software  2600 . 
     After the pump programming module  2810  completes, operation of the protocol selection module  2608  terminates at an end module  2812 . The end module  2812  corresponds to successful programming of the medical infusion pump. 
       FIGS. 29-32  illustrate a user interface  2900  used to guide a caregiver through the pump programming process. The user interface  2900  operates on a computing system associated to a medical infusion pump. The user interface  2900  includes a login button  2902 , a connection status indicator  2904 , a library indicator  2906 , and a protocol tab  2920 , a tasks tab  2940 , and a reports tab  2960 . 
     The login button  2902 , when selected, generates a login screen that checks whether a user has the right to access pump programs, protocols, or parameters. The connection status indicator  2904  displays the connection status of the user software. Connection status can include a connection to a medical infusion pump or connection to a networked server. The library indicator  2906  displays the current library loaded using the library import screen  2700  of  FIG. 27 . 
     Referring now to  FIG. 29 , the user interface  2900  is shown with the protocol tab  2920  selected.  FIG. 29  corresponds to an initial state of the protocol selection module  2608  following the load protocols module  2804  of  FIG. 28 . The protocol tab  2920  guides a user through the process of selecting a protocol, customizing one or more parameters in the protocol, and programming a medical infusion pump with the customized pump program. The protocol tab includes a therapy selection field  2908 , a therapy notes field  2910 , a qualifier selection field  2912 , a qualifier notes field  2914 , a drug selection field,  2916 , a drug notes field  2918 , and a continue button  2922 . 
     The therapy selection field  2908  lists the therapies included in the currently loaded library. For example, the two therapies shown are “Epidural” and “Patient Controlled Analgesia”. The therapy notes field displays the notes associated with the selected therapy. In the initial state, the therapy selection field  2908  and therapy notes field  2910  are active, and the qualifier fields  2912 ,  2914 , drug fields  2916 ,  2918 , and continue button  2922  are inactive. No therapy is initially selected in the therapy listing field  2908 , so the therapy notes field  2910  remains empty. 
       FIG. 30  shows the user interface  2900  with the protocol tab  2920  selected and a therapy selected from the therapy selection field  2908 . Notes related to the selected therapy appear in the therapy notes field  2910 , and the qualifier selection field  2912  and qualifier notes field  2914  activate. A listing of qualifiers associated with the selected therapy appears in the qualifier selection field  2912 . The therapy notes shown recite “Epidural Patient Controlled Analgesia” corresponding to the selected therapy, but could contain particular information related to the therapy, such as warnings, descriptions, or other information about application of the therapy. The qualifiers, which appear once the therapy is selected, are shown to include “Adult and Child over 5” and “Child 5 years and under”. No qualifier is initially selected, so the qualifier notes field  2914  remains empty. The drug selection field  2916 , drug notes field  2918 , and the continue button  2922  remain inactive. 
       FIG. 31  shows the user interface  2900  with the protocol tab  2920  selected and both a therapy selected from the therapy selection field  2908  and a qualifier selected in the qualifier selection field  2912 . Notes related to the qualifier appear in the qualifier notes field  2914 , and the drug selection field  2916  and drug notes field  2918  are active. For example, “Adult and Child over  5 ” is shown to be, and the qualifier notes field  2914  displays specific notes applicable to those patients. A listing of drugs associated with the therapy and qualifier appears in the drug selection field  2916 . Three exemplary drug menu listings including “Fentanyl 10 mcg/ml”, “HYDRO Morphone 1 mg/ml” and “Morphine 1 mg/ml” are shown. No drug is initially selected, so the drug notes field  2918  remains empty. The continue button  2922  remains inactive. 
       FIG. 32  shows the user interface  2900  with the protocol tab  2920  selected and a therapy, qualifier, and drug selected in each of the respective selection fields  2908 ,  2912 , and  2916 . Once a therapy, qualifier, and drug are selected a specific protocol is designated from among the protocols defined in the administrative software  700 . Each notes field  2910 ,  2914 , and  2918  displays information related to the selected therapy, qualifier, and drug, respectively. The continue button  2922  activates, allowing the user to continue with customization of the selected protocol by changing one or more pump parameters related to the therapy, qualifier, and drug. 
       FIG. 33  illustrates an exemplary process by which the administrative software  2600  customizes one or more parameters of a selected pump protocol, and corresponds to the settings module  2608  of  FIG. 26 . The settings module  2608  allows customization of one or more pump parameters while monitoring whether the customized value is within an acceptably safe dosage or drug delivery range. 
     The settings module  2608  is instantiated by a start module  3302 . The start module  3302  corresponds to selection of the confirmation button  2922  of  FIGS. 29-32 . 
     Following the start module  3302 , operational flow proceeds to a display module  3304 . The display module  3304  displays the default protocol settings of the protocol loaded onto a medical infusion pump screen or a computing system associated with the pump. The display module  3304  presents a number of meters to a user related to the drug delivery rates and other parameters controlled by the pump. The meters provide user controls for modifying one or more pump parameters. 
     In various embodiments, the display module  3304  can be configured to display a variety of coloring and image features. In one possible embodiment, the meters are slider bars that can include graphical thresholds set by the administrative software. A cautionary color change of the user interface (i.e. green or gray to yellow or red) can represent a warning to the user that the current setting is outside of the administratively set thresholds. 
     In another possible embodiment, the overall background color of the user interface is color-coded to correspond to hospital coding procedures, and can represent one or more location-specific warning or status conditions. Additionally, the color coding can be located behind an image displayed on the pump screen, and can be keyed to a location of the medical infusion pump, the drug administered, or a warning condition within the pump. 
     Following the display module  3304 , operational flow proceeds to a custom settings module  3306 . The custom settings module  3306  receives the current customized pump settings based on user-customization of one or more pump parameters. The custom settings module  3306  can provide a user customization interface for setting pump parameters to values other than the initial or default values set in the administrative software  700 . 
     Following the custom settings module  3306 , operational flow depends upon the implementation of the hard limits and soft limits in the administrative software  700 . If the hard limit gauges in  FIGS. 18-20  provide a warning but do not dictate an absolute maximum/minimum for the range of programmable values within the user software  2600 , operational flow proceeds to a hard limit determination operation  3308 . If the hard limit gauges dictate an absolute maximum/minimum for the range of programmable values within the user software  2600 , the hard limit will likely not be exceeded, so operational flow proceeds directly to the soft limit determination operation  3312 . 
     The optional hard limit determination operation  3308  determines if the pump settings are outside the “hard limits” set in the administrative software  700 . If the pump settings exceed the hard limit (i.e. above the maximum or below the minimum value), operational flow branches “yes” to a hard limit indicator module  3310 . If the pump settings do not exceed the hard limit, operational flow branches “no” to a soft limit determination operation  3312 . 
     The optional hard limit indicator module  3310  executes in conjunction with the hard limit determination operation  3308 , and generates an indicator to a user that the hard limit set in the administrative software is exceeded by the current settings of the medical infusion pump. If the hard limit determination operation  3308  is bypassed or otherwise absent from the user software  2600 , the hard limit indicator module  3310  can be absent/bypassed as well. The hard limit indicator module  3310  creates an alert indicator on the display of the pump or associated computing system, or sends an alert to the server or other computing system to alert a caregiver that an alert condition has been reached by the pump due to exceeding the hard limit. Operational flow proceeds to the display module  3704  to update the display and to allow additional user modification of the pump settings. 
     The soft limit determination operation  3312  determines if the pump settings are outside the “soft limits” set in the administrative software  700 . If the pump settings exceed the soft limit, operational flow branches “yes” to a soft limit indicator module  3314 . If the pump settings do not exceed the soft limit, operational flow branches “no” to return to the display module  3304 . 
     The soft limit indicator module  3314  generates an indicator to a user that the soft limit set in the administrative software is exceeded by the current parameter settings. The soft limit indicator module  3314  creates an alert indicator different from the hard limit indicator module  3310  if the hard limit indicator module  3310  exists or executes within the software  2600 . For example, the soft limit alert indicator can be a different color, display a different message, or send a different alert to a remote medical care provider. 
     Following the soft limit indicator module  3314 , operational flow proceeds to the display module  3304  to update the display and allow additional user modifications of the pump settings. Upon termination of operation of the medical infusion pump, operational flow terminates at the end module  3316 . 
     Referring now to  FIGS. 34-35 , an exemplary user interface  3400  for customizing pump parameters is shown. The user interface  3400  corresponds to the settings module  2808  of  FIG. 28 , and operates generally as described in  FIG. 33 . The user interface  3400  includes a status indicator  3402 , a continuous rate region,  3404 , a demand dose region  3406 , a demand dose lockout region  3408 , a timed limit region  3410 , and a reservoir region  3412 . The user interface  3400  further includes control buttons  3414   a - 3414   c.    
     The regions  3404 - 3412  correspond to the patient specific pump parameters  512   a  of  FIG. 5 , and can include one or more of continuous rate, demand dose, demand dose lockout, timed limits, reservoir volume, and other patient-specific parameters. Only those patient specific pump parameters that are associated with the selected index of therapy, qualifier, and drug appear in the user interface  3400 , and can be as few as one parameter and can incorporate as many parameters as are programmable within a medical infusion pump. 
     The user interface  3400  presents a standardized interface to a patient or caregiver using the user software  2600 , such as at the point of care of a patient or other location on the infusion pump network. The user interface  2600  corresponds to any of a number of types of user software  2600  and administrative software  700 . The user interface  3400  also can be configured to be used with various types of medical infusion pumps  102 . Most pumps require programming with both patient specific pump parameters and non-patient specific pump parameters, but vary as to the data structure in which this data is passed to the pump. The user interface  3400  reflects from the user software  2600  the number of regions to create corresponding to the number of patient specific pump parameters, which are generic to various types of pumps. Therefore, the user interface  3400  can be used with any of a number of pumps having various brands, interfaces, data structures, or other variances. 
     The status indicator  3402  displays the library, therapy, qualifier, and drug which define the protocol loaded by the user software  2600 . In the exemplary user interface, the library is an “ICU” library, the therapy selected is “Patient Controlled Analgesia”, the qualifier is “Adult and Child over 5”, and the drug is “Fentanyl 10 mcg/ml”. 
     The continuous rate region  3404  defines the continuous, or basal, rate of drug delivery in the specific medical infusion pump. The continuous rate region  3404  includes a numerical reading  3416  and a meter, shown as a slider bar  3418  and an indicator  3419 . The meter generally has two or more locations, each corresponding to a parameter value that can be programmed in the medical infusion pump. Generally, the positional relationship of the meter indicates the setting of the meter. The numerical reading  3416  reflects the current value for the continuous drug delivery rate. 
     In the embodiment of the meter shown as the slider bar  3418 , the indicator  3419  slides along the slider bar  3418 , and the positional relationship between the slider bar  3418  and indicator  3419  dictates the continuous drug delivery rate. Threshold indicators  3420  determine the safe limits within which the continuous rate can be set, and can represent either the hard limits or the soft limits set for the parameter by the administrative software  700 . In the embodiment of the user software  2600  whose absolute threshold levels are limited by the hard limits set in the administrative software  700 , the ends of each bar  3418  represent the hard limits and the threshold indicators  3420  represent the soft limits for the continuous rate. The thresholds are tested using the method described in  FIG. 33 . 
     The demand dose region  3406  customizes the demand dose, or bolus, delivered by the medical infusion pump. The demand dose region includes a numerical reading  3422  and a meter, shown as a slider bar  3424  and indicator  3425 . The slider bar  3424  includes threshold indicators  3426  displaying either the hard or soft limit defined in the administrative software. The numerical reading  3422 , slider bar  3424 , indicator  3425 , and threshold indicators  3426  operate analogously to those in the continuous rate region  3404 , but set the bolus level parameter rather than the continuous rate parameter. 
     The demand dose lockout region  3408  customizes the time period after a bolus is delivered in which no additional bolus can be provided. The demand dose lockout region  3408  includes a numerical reading  3428  and a meter, shown as a slider bar  3430  and indicator  3431 . The slider bar  3430  includes threshold indicators  3432  displaying either the hard or soft limit defined in the administrative software. The numerical reading  3428 , slider bar  3430 , indicator  3431 , and threshold indicators  3432  operate analogously to those in the continuous rate region  3404 , but set the demand dose lockout period parameter rather than the continuous rate parameter. 
     The timed limit region  3410  customizes the amount of the selected drug deliverable by a medical infusion pump within a specified timeframe. The timed limit region  3410  also includes a numerical reading  3434  and a meter, shown as a slider bar  3436  and indicator  3437 . The slider bar  3436  includes threshold indicators  3438  displaying either the hard or soft limit defined in the administrative software. The numerical reading  3434 , slider bar  3436 , indicator  3437 , and threshold indicators  3438  operate analogously to those in the continuous rate region  3404 , but set the timed drug delivery threshold parameter rather than the continuous rate parameter. 
     The reservoir region  3412  defines the size of the reservoir used in conjunction with the medical infusion pump. The size of the reservoir is relevant to computing drug delivery volumes for the purpose of setting alarms and other indicators for replacing or refilling the reservoir. The reservoir region  3412 , like the other regions, includes a numerical reading  3440  and a meter, shown as a slider bar  3442  and indicator  3443 . The slider bar  3442  includes threshold indicators  3444  displaying either the hard or soft limit defined in the administrative software. The numerical reading  3440 , slider bar  3442 , and indicator  3443  operate analogously to those in the continuous rate region  3404 , but set the reservoir volume parameter rather than the continuous rate parameter. In the embodiment shown, no threshold indicators are included in the reservoir region. This is because the reservoir region  3412  is allowed to use the entire operational range of the reservoir, since no hard limits are set in the reservoir volume region  2016  of  FIG. 20  in the administrative software. However, in additional embodiments, one or more threshold indicators can be incorporated into the reservoir region to trigger a warning when the drug reservoir associated with the medical infusion pump contains less than the volume of drugs set by the threshold volume. 
     The meters in each region  3404 - 3412  may be adjustable in that each of the patient specific pump parameters are adjustable using a meter. The administrative software  700  enables the adjustment of one or more of the meters by allowing adjustment of those patient specific pump parameters using the options displayed on the user interface  1800  of  FIGS. 18-20 . 
     The control buttons  3414   a - 3414   c  allow a user to send the currently set parameters to the associated medical infusion pump, cancel the parameter customization, or receive help in the process. 
       FIG. 35  shows the user interface  3400  wherein the indicator  3437  in the timed limit region  3410  resides along the slider bar  3436  at a location outside the range defined by the threshold indicators  3438 . A colored region  3502  appears around the slider bar and indicator, providing a visual warning to the user of the user software  2600  that abnormal or unadvisable pump settings exist. The colored region  3502  can change color (i.e. green or gray to yellow or red) indicating that the value is outside a threshold level. 
     It is noted that additional screen coloration or textual messages can be used to graphically send messages to a user or programmer of the medical infusion pump or associated computing system. For example, a color code system can be used to reflect a variety of conditions of the medical infusion pump. For example, a color could represent the current coding of the hospital or other health care facility at which the pump may be located. Additionally, the color code can represent a warning condition, a location at which the pump is used, a drug being administered by the pump, or an alert condition. Of course, the color code could represent additional characteristics of the medical infusion pump as well. 
     The color code can display on the computing system associated with the medical infusion pump, or can be reflected on a monitor associated to the medical infusion pump itself. Text messages can be sent from the server to be displayed on the monitor of the pump or computing system, such as warnings regarding medication, usage tips for the medical infusion pump, or other medical advice. Additionally, the color code can be placed behind images displayed on the pump which can also represent a region of the hospital, an image of the drug being administered, or other background images. Additionally, the screen coloration described can be represented as a flashing screen, a color changing (cross-fading or otherwise) screen, or various other color patterns. 
       FIG. 36  shows a pump programming user interface  3600  for guiding a user through the process of sending a pump program to a medical infusion pump. The programming screen can display properties of a pump to be programmed, and can include the settings  3602   a - 3602   e  that are to be sent to the pump, a protocol indicator field  3604 , and a confirmation button  3606 . The settings  3602   a - 3602   e  reflect the customized pump parameters set using the user interface  3600  of  FIGS. 34-35 . The customized pump parameters correspond to the patient specific pump parameters  512   a  of  FIG. 5 , and can include one or more of continuous rate, demand dose, demand dose lockout, timed limits, reservoir volume, and other patient-specific parameters. 
     The protocol indicator field  3604  displays the current protocol selected, in this case shown as “Patient Controlled Analgesia”, “Adult and Child over  5 ”, and “Fentanyl 10 mcg/ml”. The confirmation button  3606  sends the pump program, including the settings  3602   a - 3602   e  for the pump parameters, to the pump. 
     Once the pump is programmed, the pump program executes according to the protocol selected in conjunction with the customized parameters. Referring now to  FIG. 37 , an exemplary software process  3700  for displaying medical infusion pump customizations is shown. The process occurs within the pump  102 , computing system  104 , or a combination thereof, and can be part of a pump program sent to a medical infusion pump. 
     Customizations in protocol programming refer to differences between the actual pump operation and a standing order (i.e. settings programmed by an administrative user). The standing order can be an original pump parameter or initial value, and the pump operation for comparison can be either a current pump parameter or simply a non-original pump parameter. 
     A start module  3702  initiates the process  3700 . Operational flow proceeds to a comparison module, shown as a compare pump settings to standing order module  3704 . The pump settings stored on the pump or computing system as shown above in  FIG. 5  can be compared against a standing order stored on a server as a pump protocol. To ensure that the correct standing order is accessed for comparison, a GUID assigned to the loaded pump settings corresponds to the protocol stored on the server. A display change bar module  3706  presents an indicator on either the medical infusion pump or associated computing system. In the display change bar module, the original pump parameter, or portion of a standing order, can be juxtaposed against the non-original pump parameter, such as in a table format. One or both of the original and non-original pump parameters can be a standard or customized pump parameter. Pump parameters that are displayed in the display change bar module  3706  include drug delivery rate, drug capacity, remaining capacity of the medical infusion pump, bolus levels or occurrences, alarm occurrences, threshold, and/or frequency, drug delivery periods, or other parameters. 
     In one possible embodiment, a legend can indicate the meaning of the pump parameters being displayed, and a time/date stamp can display the time at which the original and/or non-original pump parameter was measured. In additional embodiments, differences between the original and non-original pump parameters can be highlighted when displayed, such as by using a color change or other indicator. 
     Operational flow terminates at an end module  3708 . 
       FIG. 38  is an exemplary schematic illustration of a change bar  3800  displayed on a medical infusion pump  102 . The change bar  3800  as shown is displayed on the screen  406  of the pump described above in  FIG. 4 . Alternately, the change bar  3800  can be displayed on a computing system  104  associated with the medical infusion pump  102 . 
     The change bar  3800  includes a plurality of change bar entries  3802 . The change bar entries correspond to pump parameters, and in the figure shown the entries  3802   a - 3802   b  correspond to patient specific pump parameters. The change bar can display non patient specific pump parameters as well. 
     The change bar  3800  can compare any of a number of original and non-original pump parameters. In one embodiment, the change bar  3800  compares the current operation of the pump to the originally programmed operation of the pump. In another embodiment, the change bar  3800  compares the operation of the pump as initially programmed to the suggested programming of the pump based on the original pump protocol. In a further embodiment, the change bar  3800  compares historical activity of the pump to the current pump protocol. 
     In one embodiment of the change bar  3800 , the change bar entries  3802   a - 3802   b  change color when the difference between the original and the non-original pump parameters exceeds a threshold amount. The threshold amount can be, for example, the soft limits set in the administrative software  700 . In a further embodiment, the text can change color when a difference greater than the threshold is detected. The change bar can incorporate additional graphics and images on the display. 
     Referring now to  FIG. 39 , user software  2600  is again described in which the user interface  2900  of  FIGS. 29-32  is shown with the tasks tab  2940  selected. The tasks tab  2940  includes a tasks region  3902  for selection of one or more task options, of which a comparison is displayed when the user selects the “continue” option  3904  shown. Tasks include operations related to maintenance of the pump once in operation. The tasks region  3902  includes a number of pump comparison options, such as a compare pump settings option  3906 , a compare pump settings to protocol option  3908 , and a change reservoir option  3910 . The compare pump settings option  3906  compares the pump settings to the original protocol from which the pump parameters were based. The compare pump settings to protocol option  3908  compares all pump settings for the protocol selected. 
     The user software  2600  accesses the protocol loaded on the server  206  to compare the current pump settings to the original or current protocol using the options  3904 ,  3906 . To accomplish this, it is necessary for the user software  2600  to clarify to the server  206  which protocol is being compared within the database  504  of  FIG. 5 . The user software  2600 , in conjunction with the server  206  uses the globally unique identifier (GUID) described above in  FIG. 5  to provide the identifier for corresponding the protocol on the pump  102  to the protocol as stored in the server  206 . The GUID can be generated by the server  206  and transmitted alongside the protocol and/or library when transmitted to the computing system  104  or infusion pump  102 , as described above. 
     The change reservoir option  3910  guides a user of the software  2600  through changing a drug reservoir used in conjunction with the medical infusion pump.  FIG. 40  shows the user interface  2900  with the reports tab  2960  selected. During or after pump operation, reports including drug delivery or event logs are used to detect the condition of a patient or of the medical infusion pump. The events which can be tracked using reports tab  2960  are those which are available due to being automatically tracked by the medical infusion pump. The reports tab  2960  presents a number of selectable options for generating reports of pump activity, including time/date information, drug delivery information, and other event information. The reports tab  2960  includes source fields  4002  and option regions  4004 . The source fields  4002  present a variety of sources from which reports can be drawn. The source fields  4002  can include the medical infusion pump and stored reports saved within the network. The option regions  4004  present a number of options related to the selected source. For example, a report generated directly from a medical infusion pump can be produced based on prescription settings, and event log, a patient history, drug delivery, or a reported pain scale. A report generated from a saved report can be produced by indicating the patient identification, the pump identification, or the report type and date. A view field  4006 , upon selection by a user, generates the report based on the source and options selected. 
       FIG. 41  shows a report user interface  4100  for displaying operation of a medical infusion pump. The report user interface  4100  shows the report generated using the options selected in the report tab  2960 . The report shown in the report screen is a drug delivery report, and can be printed, saved, or discarded by the user. The drug delivery report can include the volume of the drug delivered, as well as the timing of delivery of the drug. Additional attributes of the medical infusion pump can be reported in the drug delivery report as well. 
     Aspects of the invention described as being carried out by a computing system or otherwise described as a method of control or manipulation of data may be implemented in one or a combination of hardware, firmware, and software. Embodiments of the invention may also be implemented as instructions stored on a machine-readable medium, which may be read and executed by at least one processor to perform the operations described herein. A machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium may include read-only memory (ROM), random-access memory (RAM), magnetic disc storage media, optical storage media, flash-memory devices, electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.), and others. 
     In the foregoing detailed description, various features are occasionally grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments of the subject matter require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the detailed description, with each claim standing on its own as a separate preferred embodiment. Therefore, the spirit and scope of the appended claims should not be limited to the description of the preferred versions contained herein.