The present invention generally relates to implantable medical devices and ways to store and analyze data gathered by such devices.
Implantable medical devices (IMDs) are implanted within the body of a patient to monitor, regulate, and/or correct physiological conditions. Implantable medical devices include implantable cardiac stimulation devices (e.g., pacemakers, implantable defibrillators) that apply stimulation therapy to the heart, implantable cardiac monitors that monitor heart activity, implantable neurological devices that monitor and stimulate nerves, and other implantable devices used for diagnostic and/or therapeutic purposes, such as medication dosing devices.
Implantable medical devices typically include a control unit positioned within a casing that is implanted into the body. A set of leads provide an electrical interface between the encased control unit and the body. With improved processor and memory technologies, the control units have become increasingly more sophisticated, allowing them to monitor many types of physiological conditions and apply tailored therapies in response to those conditions.
Some implantable medical devices can be designed to communicate with, and/or be programmed by, systems that are external to the patient. For example, implantable cardiac devices are equipped with telemetry circuits that communicate with an external programmer via a proximally positioned electromagnetic wand. The wand contains a coil that forms a transformer coupling with the device's telemetry circuitry to transmit low frequency signals by varying coil impedance.
Early telemetry communication was unidirectional from the programmer to the implanted device. Passive telemetry allowed a treating physician to download instructions to the implanted device following implantation. Due to power and size constraints, early commercial versions of implanted devices were typically incapable of transmitting information back to the programmer.
As power capabilities improved, active telemetry became feasible, allowing synchronous bidirectional communication between the implanted device and the external system. One example of an active telemetry protocol is to utilize a half-duplex communication mode in which the programmer sends instructions in a predefined frame format and, following termination of this transmission, the implanted device returns data using the frame format. With active telemetry, the treating physician is able to not only program the implanted device, but also retrieve information from the implanted device to evaluate physiological activity and device performance. The treating physician may periodically want to review device performance or physiological data for predefined periods of time to ensure that the device is providing therapy in a desired manner. Consequently, current generation implantable cardiac therapy devices incorporate memories, and the processors periodically sample and record various performance parameter measurements in the memories. Data pertaining to a patient's condition can also be passed to and stored by the external system during communication sessions with the implanted device. This data can then be analyzed by the system.
One challenge that still persists, however, is how to efficiently and effectively store and analyze data captured by implantable medical devices.
A hierarchical data storage and analysis system for implantable medical devices is described. The system may be implemented through a plurality of intelligent agents that are executed at each tier of the hierarchy to perform defined tasks. For example, execution of the agents may be utilized to manage data based on the capabilities of each tier of the hierarchy, such as analytical capabilities to analyze patient data, processing capabilities, memory capabilities, communication capabilities, and so forth.
In the description that follows, like numerals or reference designators are used to reference like parts or elements.
The following description sets forth an implantable medical device (IMD) network architecture in which data collected from an IMD is managed for communication, analysis, and/or storage by computing devices included in the network architecture. For example, the network architecture may include a variety of computing devices such as the IMD, one or more intermediate computing devices, and an endpoint device. One or more of the computing devices may have different analytical capabilities to analyze the data, may have differing amount of data storage, may have different respective amounts of processing resources, may utilize different respective patient diagnostic algorithms to analyze the data, and so forth. Accordingly, the network architecture may be configured as one or more hierarchies that reflect the different capabilities of each of the computing devices such that analysis and storage of the data is optimized.
Cardiac Therapy Network
The IMD 102 may communicate with a standalone or offline programmer 110 via short-range telemetry technology. The offline programmer 110 is equipped with a wand that, when positioned proximal to the IMD 102, communicates with the IMD 102 through a magnetic coupling.
The IMD 102 can alternatively, or additionally, communicate with a local transceiver. The local transceiver 112 may be a device that resides on or near the patient, such as an electronic communications device that is worn by the patient or is situated on a structure within the room or residence of the patient. The local transceiver 112 communicates with the IMD 102 using short-range telemetry or longer-range high-frequency-based telemetry, such as RF (radio frequency) transmissions. Alternatively, the local transceiver 112 may be incorporated into the IMD 102, as represented by dashed line 116. In this case, the IMD includes a separate and isolated package area that accommodates high-frequency transmissions without disrupting operation of the monitoring and stimulation circuitry.
Depending upon the implementation and transmission range, the local transceiver 112 can be in communication with various other devices of the network architecture 100. One possible implementation is for the local transceiver 112 to transmit information received from the IMD 102 to a networked programmer 114, which is connected to network 118. The networked programmer 114 is similar in operation to standalone programmer 110, but differs in that it is connected to the network 118. The networked programmer 114 may be local to, or remote from, the local transceiver 112; or alternatively, the local transceiver 112 may be incorporated into the networked programmer 114, as represented by dashed line 120.
Another possible implementation is for the local transceiver to be connected directly to the network 118 for communication with remote computing devices and/or programmers. Still another possibility is for the local transceiver 112 to communicate with the network 118 via wireless communication, such as via a satellite system 122.
The network 118 may be implemented by one or more different types of networks (e.g., Internet, local area network, wide area network, telephone, cable, satellite, etc.), including wire-based technologies (e.g., telephone line, cable, fiber optics, etc.) and/or wireless technologies (e.g., RF, cellular, microwave, IR, wireless personal area network, etc.). The network 118 can be configured to support any number of different protocols, including HTTP (HyperText Transport Protocol), TCP/IP (Transmission Control Protocol/Internet Protocol), WAP (Wireless Application Protocol), Bluetooth, and so on.
The network architecture 100 facilitates distribution of data among the IMD 102, the local transceiver unit 112, the networked programmer 114, and one or more hierarchical endpoint devices, represented pictorially in
Data gathered from the IMD 102 may be integrated, processed, and distributed by each of the computing devices (e.g., the IMD 102, offline programmer 110, networked programmer 114, patient notification device 128, knowledge worker notification device 130, and database server 140) for viewing by knowledge workers. The endpoint devices may maintain and store the data from the IMD 102, and prepare the data for efficient presentation to knowledge workers. Additionally, the endpoint devices may be utilized in a variety of ways. For example, the endpoint devices may be utilized by healthcare providers to store and process patient records. A manufacturer may utilize the endpoint device configured as a computer system that tracks data returned from the IMD 102. Additionally, clinical groups may utilize the endpoint device to store and analyze data across patient populations. Further, regulatory agencies may utilize the endpoint device to register and track healthcare risk data for a plurality of IMDs.
The network architecture 100 supports two-way communication. Not only is data collected from the IMD 102 and distributed to the various computing devices, but also data may be returned from these computing devices to the networked programmer 114 and/or the local transceiver 112 for communication back to the IMD 102. Information returned to the IMD 102 may be used to adjust operation of the device, update software executed on the device, and/or modify therapies being applied by the device. Such information may be imparted to the IMD 102 automatically, without the patient's knowledge. Further discussion of adjustment of parameters used in patient diagnostic algorithms and software upgrades may be found in relation to
Additionally, data may be sent to a patient notification device 128 to notify the patient of some event or item. The patient notification device 128 can be implemented in a number of ways including, for example, as a telephone, a cellular phone as illustrated, a pager, a PDA (personal digital assistant), a dedicated patient communication device, a computer, an alarm, and so on. Notifications may be as simple as an instruction to sound an alarm to inform the patient to call into the healthcare providers, or as complex as HTML-based pages with graphics and textual data to educate the patient. Notification messages sent to the patient notification device 128 can contain essentially any type of information related to therapeutic purposes and/or device operation. Such information might include new studies released by clinical groups pertaining to device operation and patient activity (e.g., habits, diets, exercise, etc.), recall notices or operational data from the manufacturer, patient-specific instructions sent by the healthcare providers, or warnings published by regulatory groups.
Notifications can also be sent from the knowledge worker to the patient. Notification device 130 might include, for example, one or more computing devices designed to create and deliver notification messages on behalf of the knowledge workers. The notification system 130 delivers the messages in formats supported by the various types of patient notification devices 128. For instance, if the patient carries a pager, a notification message might consist of a simple text statement in a pager protocol. For a more sophisticated wireless-enabled PDA or Internet-oriented cellular phone, messages might contain more than text data and be formatted using WAP formats.
Each of the computing devices illustrated in
Taken together as a single architecture, the computing devices form a hierarchy of varying analytical capabilities for processing and storing data collected by the IMD 102. Data is migrated among the devices to take advantage of these capability differences depending upon defined sets of heuristics.
Each of the computing devices in the hierarchy 200 has respective analytical capabilities. The IMD 102 includes analytical capabilities 204, each of the intermediate computing devices 202(1)-202(M) includes respective analytical capabilities 206(1)-206(M), and the endpoint device 140 also includes analytical capabilities 208. However, the analytical capabilities of each of the computing devices may differ.
The analytical capabilities 204 of the IMD 102, for example, may be limited by hardware and software capabilities of the IMD 102. For instance, the IMD 102 may have a limited amount of memory. Often, this memory is shared by diagnostic data and software that is executed on the IMD 102 to control the functionality of the IMD 102. Thus, there is a continuing need for more memory for use by software of the IMD 102 to provide ever increasing levels of functionality and for use in storing additional diagnostic information to help a physician in programming the IMD 102 to settings that are optimal for a given patient. Adding more memory to the IMD 102, however, increases both the power consumption and the size of the device.
Additionally, patient data stored in the memory is telemetered out of the IMD 102 to a programmer for examination by a knowledge worker (e.g. a physician, nurse, physician's assistant, etc.). Telemetry speeds, however, may be limited by the amount of current that can be drawn from the battery of the IMD 102. Telemetry speeds may also be limited due to attenuation of high frequency signals when utilized to communicate the data through the patient's body and/or a casing of the IMD 102, which may pose limitations in which frequencies can be used for communication. The processing capabilities within the IMD 102 may also be limited due to the power and space considerations in the design of the IMD 102.
Therefore, to provide additional analytical capabilities to analyze data collected by the IMD 102, the hierarchy 200 employs successive tiers, with one or more successive tiers in the hierarchy 200 from the IMD 102 having additional analytical capabilities. For example, the IMD 102 may communicate the data to an intermediate computing device 202(1) which is represented pictorially as an external patient device for being worn by the patient. The intermediate computing device 202(1) includes respective analytical capabilities 206(1) that are not included in the analytical capabilities 204 of the IMD 102. For instance, intermediate computing device 202(1) may include additional hardware resources (e.g., processor, memory, battery power, etc.), and/or software resources (e.g., patient diagnostic algorithms, device diagnostic algorithms, etc.) because the intermediate computing device 202(1) does not have the same space and power limitations encountered by the IMD 102 when implanted in the patient's body. The intermediate computing device 202(1), however, may be configured to be worn by the patient, and therefore have a somewhat limited size.
Intermediate computing device 202(m) is represented pictorially as a programmer, which may or may not correspond to the offline programmer 110 and/or the networked programmer 114 of
Likewise, intermediate computing device 202(M) is represented pictorially as a server that is not configured for mobile applications. Therefore, intermediate computing device 202(M) may include analytical capabilities 206(M) that are not available to any of the previously described computing devices in the hierarchy 200, i.e. the IMD 102 and the intermediate computing devices 202(1), 202(m).
The endpoint device 140 in this implementation includes the data processing system 124 and database storage 126 of
Thus, in the implementation shown in
To manage data in the hierarchy 200, both from the IMD 102 through the intermediate computing devices 202(1)-202(M) to the endpoint device 140, and vice versa, each of the computing devices may execute one or more agents. The agents, when executed, may manage distribution of the data based on capabilities of the respective computing device, further description of which may be found starting in relation to
Exemplary IMD
The IMD 102 is also shown in electrical communication with the patient's heart 106 by way of an implantable right ventricular lead 108(3) having, in this implementation, a right ventricular tip electrode 310, a right ventricular ring electrode 312, a right ventricular (RV) coil electrode 314, and an SVC coil electrode 316. Typically, the right ventricular lead 108(3) is transvenously inserted into the heart 106 to place the right ventricular tip electrode 310 in the right ventricular apex so that the RV coil electrode 314 will be positioned in the right ventricle and the SVC coil electrode 316 will be positioned in the superior vena cava. Accordingly, the right ventricular lead 108(3) is capable of receiving cardiac signals, and delivering stimulation in the form of pacing and shock therapy to the right ventricle.
The circuitry is housed in housing 400, which is often referred to as the “can”, “case”, “encasing”, or “case electrode”, and may be programmably selected to act as the return electrode for unipolar modes. Housing 400 may further be used as a return electrode alone or in combination with one or more of the coil electrodes for shocking purposes. Housing 400 further includes a connector (not shown) having a plurality of terminals 402, 404, 406, 408,412, 414, 416, and 418 (shown schematically and, for convenience, the names of the electrodes to which they are connected are shown next to the terminals).
To achieve right atrial sensing and pacing, the connector includes at least a right atrial tip terminal (AR TIP) 402 adapted for connection to the atrial tip electrode 302. To achieve left chamber sensing, pacing, and shocking, the connector includes at least a left ventricular tip terminal (VL TIP) 404, a left atrial ring terminal (AL RING) 406, and a left atrial shocking terminal (AL COIL) 408, which are adapted for connection to the left ventricular ring electrode 304, the left atrial ring electrode 306, and the left atrial coil electrode 308, respectively. To support right chamber sensing, pacing, and shocking, the connector includes a right ventricular tip terminal (VR TIP) 412, a right ventricular ring terminal (VR RING) 414, a right ventricular shocking terminal (RV COIL) 416, and an SVC shocking terminal (SVC COIL) 418, which are adapted for connection to the right ventricular tip electrode 310, right ventricular ring electrode 312, the RV coil electrode 314, and the SVC coil electrode 316, respectively.
At the core of the IMD 102 is a programmable microcontroller 420 that controls various operations of the ICTD, including cardiac monitoring and stimulation therapy. Microcontroller 420 includes a microprocessor (or equivalent control circuitry), RAM and/or ROM memory, logic and timing circuitry, state machine circuitry, and I/O circuitry. Microcontroller 420 includes the ability to process or monitor input signals (data) as controlled by a program code stored in a designated block of memory. Any suitable microcontroller 420 may be used.
For discussion purposes, microcontroller 420 is illustrated as including timing control circuitry 432 to control the timing of the stimulation pulses (e.g., pacing rate, atrio-ventricular (AV) delay, atrial interconduction (A-A) delay, or ventricular interconduction (V-V) delay, etc.) as well as to keep track of the timing of refractory periods, blanking intervals, noise detection windows, evoked response windows, alert intervals, marker channel timing, and so on. Microcontroller 420 may further include a plurality of agents 434, 436. The agents, when executed, can be utilized to control functionality of the device 102. The agents 434, 436 may be implemented in hardware as part of the microcontroller 420, or as software/firmware instructions programmed into the device and executed on the microcontroller 420 during certain modes of operation. Further discussion of agent functionality may be found in relation to
The IMD 102 further includes an atrial pulse generator 422 and a ventricular pulse generator 424 that generate pacing stimulation pulses for delivery by the right atrial lead 108(1), the coronary sinus lead 108(2), and/or the right ventricular lead 108(3) via an electrode configuration switch 426. It is understood that in order to provide stimulation therapy in each of the four chambers of the heart, the atrial and ventricular pulse generators, 422 and 424, may include dedicated, independent pulse generators, multiplexed pulse generators, or shared pulse generators. The pulse generators 422 and 424 are controlled by the microcontroller 420 via appropriate control signals 428 and 430, respectively, to trigger or inhibit the stimulation pulses.
The electronic configuration switch 426 includes a plurality of switches for connecting the desired electrodes to the appropriate I/O circuits, thereby providing complete electrode programmability. Accordingly, switch 426, in response to a control signal 442 from the microcontroller 420, determines the polarity of the stimulation pulses (e.g., unipolar, bipolar, combipolar, etc.) by selectively closing the appropriate combination of switches (not shown).
Atrial sensing circuits 444 and ventricular sensing circuits 446 may also be selectively coupled to the right atrial lead 108(1), coronary sinus lead 108(2), and the right ventricular lead 108(3), through the switch 426 to detect the presence of cardiac activity in each of the four chambers of the heart. Accordingly, the atrial (ATR. SENSE) and ventricular (VTR. SENSE) sensing circuits, 444 and 446, may include dedicated sense amplifiers, multiplexed amplifiers, or shared amplifiers. Each sensing circuit 444 and 446 may further employ one or more low power, precision amplifiers with programmable gain and/or automatic gain control, bandpass filtering, and a threshold detection circuit to selectively sense the cardiac signal of interest. The automatic gain control enables the IMD 102 to deal effectively with the difficult problem of sensing the low amplitude signal characteristics of atrial or ventricular fibrillation. Switch 426 determines the “sensing polarity” of the cardiac signal by selectively closing the appropriate switches. In this way, the clinician may program the sensing polarity independent of the stimulation polarity.
The outputs of the atrial and ventricular sensing circuits 444 and 446 are connected to the microcontroller 420 which, in turn, is able to trigger or inhibit the atrial and ventricular pulse generators 422 and 424, respectively, in a demand fashion in response to the absence or presence of cardiac activity in the appropriate chambers of the heart. The sensing circuits 444 and 446 receive control signals over signal lines 448 and 450 from the microcontroller 420 for purposes of controlling the gain, threshold, polarization charge removal circuitry (not shown), and the timing of any blocking circuitry (not shown) coupled to the inputs of the sensing circuits 444 and 446.
Cardiac signals are also applied to inputs of an analog-to-digital (A/D) data acquisition system 452. The data acquisition system 452 is configured to acquire intracardiac electrogram signals, convert the raw analog data into a digital signal, and store the digital signals for later processing and/or telemetric transmission to an external device 454. The data acquisition system 452 is coupled to the right atrial lead 108(1), the coronary sinus lead 108(2), and the right ventricular lead 108(3) through the switch 426 to sample cardiac signals across any pair of desired electrodes.
The data acquisition system 452 may be coupled to the microcontroller 420, or other detection circuitry, to detect an evoked response from the heart 106 in response to an applied stimulus, thereby aiding in the detection of “capture”. Capture occurs when an electrical stimulus applied to the heart is of sufficient energy to depolarize the cardiac tissue, thereby causing the heart muscle to contract. The microcontroller 420 detects a depolarization signal during a window following a stimulation pulse, the presence of which indicates that capture has occurred. The microcontroller 420 enables capture detection by triggering the ventricular pulse generator 424 to generate a stimulation pulse, starting a capture detection window using the timing control circuitry 432 within the microcontroller 420, and enabling the data acquisition system 452 via control signal 456 to sample the cardiac signal that falls in the capture detection window and, based on the amplitude, determines if capture has occurred.
The microcontroller 420 is further coupled to a memory 460 by a suitable data/address bus 462, wherein the programmable operating parameters used by the microcontroller 420 are stored and modified, as required, in order to customize the operation of the implantable device 102 to suit the needs of a particular patient. Such operating parameters define, for example, pacing pulse amplitude, pulse duration, electrode polarity, rate, sensitivity, automatic features, arrhythmia detection criteria, and the amplitude, waveshape and vector of each shocking pulse to be delivered to the patient's heart 106 within each respective tier of therapy. The operating parameters may be updated through communication with an external device, further discussion of which may be found in relation to
Operating parameters of the IMD 102 may be non-invasively programmed into the memory 460 through a telemetry circuit 464 in telemetric communication with an external device, such as a programmer 110 or local transceiver 112. The telemetry circuit 464 advantageously allows intracardiac electrograms and status information relating to the operation of the device 102 (as contained in the microcontroller 420 or memory 460) to be sent to the external devices.
The IMD 102 can further include one or more physiologic sensors 470, commonly referred to as “rate-responsive” sensors because they are typically used to adjust pacing'stimulation rate according to the exercise state of the patient. However, the physiological sensor 470 may further be used to detect changes in cardiac output, changes in the physiological condition of the heart, or diurnal changes in activity (e.g., detecting sleep and wake states, detecting position or postural changes, etc.). Accordingly, the microcontroller 420 responds by adjusting the various pacing parameters (such as rate, AV Delay, V-V Delay, etc.) at which the atrial and ventricular pulse generators, 422 and 424, generate stimulation pulses. While shown as being included within the device 102, it is to be understood that the physiologic sensor 470 may also be external to the device 102, yet still be implanted within or carried by the patient. Examples of physiologic sensors that may be implemented in device 102 include known sensors that, for example, sense respiration rate and/or minute ventilation, pH of blood, ventricular gradient, and so forth.
The IMD 102 additionally includes a battery 476 that provides operating power to all of circuits shown in
The IMD 102 can further include magnet detection circuitry (not shown), coupled to the microcontroller 420, to detect when a magnet is placed over the device 102. A magnet may be used by a clinician to perform various test functions of the device 102 and/or to signal the microcontroller 420 that the external programmer is in place to receive or transmit data to the microcontroller 420 through the telemetry circuits 464.
The IMD 102 further includes an impedance measuring circuit 478 that is enabled by the microcontroller 420 via a control signal 480. Uses for an impedance measuring circuit 478 include, but are not limited to, lead impedance surveillance during the acute and chronic phases for proper lead positioning or dislodgement; detecting operable electrodes and automatically switching to an operable pair if dislodgement occurs; measuring respiration or minute ventilation; measuring thoracic impedance for determining shock thresholds; detecting when the device has been implanted; measuring stroke volume; and detecting the opening of heart valves, etc. The impedance measuring circuit 478 is advantageously coupled to the switch 426 so that any desired electrode may be used.
In the case where the IMD 102 is intended to operate as an implantable cardioverter/defibrillator (ICD) device, it detects the occurrence of an arrhythmia, and automatically applies an appropriate electrical shock therapy to the heart aimed at terminating the detected arrhythmia. To this end, the microcontroller 420 further controls a voltage delivery circuit or shock circuit 482 by way of a control signal 484. The shocking circuit 482 generates shocking pulses of low (up to 0.5 Joules), moderate (0.5-10 Joules), or high energy (11 to 40 Joules), as controlled by the microcontroller 420. Such shocking pulses are applied to the patient's heart 106 through at least two shocking electrodes, and as shown in this implementation, selected from the left atrial coil electrode 308, the RV coil electrode 314, and/or the SVC coil electrode 316. As noted above, the housing 400 may act as an active electrode in combination with the RV coil electrode 314, or as part of a split electrical vector using the SVC coil electrode 316 or the left atrial coil electrode 308 (i.e., using the RV electrode as a common electrode).
Cardioversion shocks are generally considered to be of low to moderate energy level (so as to minimize pain felt by the patient), and/or synchronized with an R-wave and/or pertaining to the treatment of tachycardia. Defibrillation shocks are generally of moderate to high energy level (i.e., corresponding to thresholds in the range of 5-40 Joules), delivered asynchronously (since R-waves may be too disorganized), and pertaining exclusively to the treatment of fibrillation. Accordingly, the microcontroller 420 is capable of controlling the synchronous or asynchronous delivery of the shocking pulses.
The IMD 102 is further designed with the ability to support high-frequency wireless communication, typically in the radio frequency (RF) range. The IMD 102 is equipped with a high-frequency transceiver 492 and a diplexer 494. High-frequency signals received by a dedicated antenna 496, or via leads 108, are passed to the transceiver 492 directly, or via diplexer 494. The high-frequency transceiver 492 may be configured to operate on one or a few frequencies. Alternatively, the transceiver 492 may include a tuner 496 that tunes to various frequencies when attempting to establish communication links with the external communication device (e.g., programmer, local transceiver, etc.).
In one implementation, the high-frequency circuitry may be contained within a secondary, isolated casing 490 to enable handling of high-frequency signals in isolation from the cardiac therapy circuitry. In this manner, the high-frequency signals can be safely received and transmitted, thereby improving telemetry communication, without adversely disrupting operation of the other device circuitry.
Exemplary Computing Device
The computing device 500 may further be equipped with a network I/O connection 520 to facilitate communication with a network. The network I/O 520 may be a wire-based connection (e.g., network card, modem, etc.) or a wireless connection (e.g., RF transceiver, Bluetooth device, etc.). The computing device 500 may also include a user input device 522 (e.g., keyboard, mouse, stylus, touch pad, touch screen, voice recognition system, etc.) and an output device 524 (e.g., monitor, LCD, speaker, printer, etc.).
Various aspects of the methods and systems described throughout this disclosure may be implemented in computer software or firmware as computer-executable instructions. When executed, these instructions direct the computing device (alone, or in concert with other computing devices of the system) to perform various functions and tasks that enable the network architecture 100.
Agent Hierarchy
The agent hierarchy provides a mechanism for managing collection, storage, and/or analysis of data from one or more IMDs. The agent hierarchy may employ a variety of hierarchies that are configured to address capabilities of computing devices of a network system implementing the hierarchy. Examples of capabilities may include analytical capabilities, processing capabilities, memory capabilities, network capabilities, and so on, examples of which are described in greater detail in relation to
As previously described, each of the tiers 602-608 may have different capabilities. In
Each tier 602-608 includes an agent 610-616 that addresses capabilities of the respective tier 602-608. For example, the IMD 102 includes an IMD agent 610 that, when executed, manages data on the IMD 102 according to the memory and processing capabilities of the IMD 102. The intermediate computing device 202(1), represented as a patient wearable unit, includes a patient wearable unit agent 612 that, when executed, manages data on the intermediate computing device 202(1) according to the memory and processing capabilities of the intermediate computing device 202(1). Likewise, the intermediate computing device 202(M) includes a programmer agent 614 and the endpoint device 140 includes an endpoint agent 616.
The execution of the agents 610-616 may be utilized to manage data in the hierarchy 600. The IMD agent 610, for example, may determine that data collected by the IMD 102 may require additional processing that is not available to the IMD agent 610, itself. Therefore the IMD agent 610, when executed, may communicate the data to a next tier of the hierarchy 600, i.e. the second tier 604, having additional processing resources. Similar determinations may be made through execution of the patient wearable unit and programmer agents 612, 614. Thus, data collected by the IMD 102 may be communicated through successive tiers 602-608 of the hierarchy 600 to utilize additional processing capabilities that are available in the hierarchy 600. An additional example of agent execution according to processing capabilities may be found in relation to
Additionally, the agents 610-616 may manage data in the hierarchy 600 based on data criticality in the operation of the respective tiers 602-608. For example, each successive tier 604-608 of the hierarchy 600 of
The agent hierarchy 700 shows IMD agent 610 as associated with the IMD 102 that is internal to the patient. The PWU agent 612, the PRO agent 614, and the ED agent 616 are associated with respective external devices, such as the intermediate computing devices 202(1), 202(m) and the endpoint device 140. As previously described, each of the agents 610-616 may be configured to address the differing capabilities of respective devices when implemented internally within the patient or external from the patient. The IMD agent 610, for instance, which is illustrated as being executed on the IMD 102 may include a plurality of agents, such as a critical events agent 702, one or more communication agents 704, one or more work-flow automation agents 706, and so on. The critical events agent 702 is executed on the IMD 102 to monitor, capture and process data collected by the IMD 102. For example, the critical events agent 702 may analyze the data collected by the IMD 102 to determine if the patient is experiencing, has experienced, and/or will experience a critical event relating to the health of the patient. The critical events agent 702 may then invoke the communication agent 704 to communicate data describing the critical event through the agent hierarchy 700 to a knowledge worker and/or to the patient.
The communication agent 704 is executed to manage communications between the IMD 102 and other computing devices of the agent hierarchy 700. For example, the communication agent 704 may include a network management agent that, when executed by the IMD 102, locates and identifies other computing devices that are communicatively coupled to the IMD 102. The communication agent 704 may also be executed such that the IMD 102 may communicate with the other computing device. For instance, the communication agent 704 may also include an interoperability agent that manages communication protocols and interoperability of the IMD 102 with other computing devices. The interoperability agent determines which one of a plurality of wireless protocols are to be used to communicate with another computing device, data types supported by the other computing device, and so on.
The IMD 102 may also include one or more work-flow automation agents 706. The work-flow automation agents 706, when executed, provide decision support which may be utilized to notify the patient and/or knowledge worker of the patient's condition. For example, the work-flow automation agents may utilize one or more diagnostic algorithms that analyze data collected by the IMD 102. Data resulting from this analysis may then be communicated through the hierarchy to the endpoint device 140 to provide context-sensitive information that may be utilized by the knowledge worker to help diagnose the patient's condition, monitor operational parameters of the IMD 102, and so on.
External computing devices of the agent hierarchy 700 may also include a critical events agent 708, one or more communication agents 710 and one or more work-flow automation agents 712 that correspond, respectively, to the critical events agent 702, communication agent 704, and work-flow automation agent 706 of the IMD 102. Each successive agent included on each respective computing device of the hierarchy 700, however, may have additional capabilities that are not available to a previous agent in the agent hierarchy 700. For example, each critical events agent may utilize additional patient diagnostic algorithms that are not available to a previous critical events agent in the agent hierarchy 700. In another example, each critical events agent may utilize diagnostic algorithms that require additional computational resources, such as additional processing and/or memory resources. A critical events agent, for instance, may execute a diagnostic algorithm that analyzes data stored on the intermediate computing device 202(m), e.g. a programmer. The intermediate computing device 202(m) may also store patient data for a predetermined amount of time, such as a week. The critical events agent executed on the endpoint device 140, however, may have access to all previous data that was collected by the IMD 102. Therefore, the critical events agent executed on the endpoint device 140 may have additional capabilities that are not available to the critical events agent executed on the intermediate computing device 202(m).
The external computing devices are illustrated in
The critical events agent 702, 708, data management agent 714, and work-flow automation agent 706, 712 were each described as having one or more capabilities to analyze data collected by the IMD 102. Thus, in additional implementations the analysis functionality provided by these agents may be referred to collectively as being provided by an analysis agent.
Operation of the Agent Hierarchy
The following discussion describes a variety of processes that may be implemented utilizing the previously described agent hierarchy. Aspects of each process may be implemented in hardware, firmware, or software, or a combination thereof.
At block 804, distribution of the data from block 802 is managed on a plurality of computing devices that implement the agent hierarchy. At block 806, the data is analyzed utilizing analytical capabilities of an agent that is executed on one of the computing devices. For example, the IMD may execute an agent that analyzes the data by utilizing an algorithm having one or more parameters that relate to expected ranges of the data. The agent may compare data with expected ranges of corresponding data to determine the patient's condition.
At decision block 808, a determination is made based on the analysis of block 806 to determine whether to notify one or more designated users of the patient's condition. For example, the analysis at block 806 may indicate that the patient's condition is worsening. Therefore, at block 810 designated users may be notified of the patient's condition, such as one or more knowledge workers and/or the patient. A notification may be sent to a knowledge worker in a variety of ways, such as via a telephone, fax, desktop computer and/or laptop computer as illustrated. The notification may also be provided to the intermediate computing device 202(m) configured as a patient wearable device to notify the patient.
If a result of the decision at block 808 is that notification is not needed, then at decision block 812 a determination is made at to whether the data is to be communicated to another computing device having additional analytical capabilities. For example, the other computing device may have analytical capabilities that are not included on the computing device that performed the analysis at block 806. If additional analytical capabilities are not needed, the computing device returns to block 806 to analyze additional data. The determination may be performed in a variety of ways. In one example, the agent executes a diagnostic algorithm that returns a result indicating whether further analysis is desired. In another example, the agent determines that even though the agent may analyze the data according to a desired algorithm, that such analysis could be more quickly performed by another agent executed on another computing device having additional hardware and/or software capabilities.
If additional analytical capabilities are needed, then the data is communicated to the computing device having the additional analytical capabilities, such as an intermediate computing device (block 814). Blocks 806, 808, 812, 814 of the process 800 may then be repeated by successive computing devices in the hierarchy. Thus, in this process 800, data collected by the IMD at block 802 is communicated through the hierarchy using successive computing devices when additional analytical capabilities are desired for analyzing the patient data.
If additional processing resources are needed, the analysis agent on the IMD invokes the communication agent on the IMD to communicate the data to another computing device at block 908. At decision block 910, the communication agent determines whether a link is established with an intermediate computing device. Once established, the data is communicated to the intermediate computing device (block 912).
At block 914, the intermediate computing device executes an analysis agent. The analysis agent, when executed, analyzes the data and decides whether additional processing resources are needed to further analyze the data (block 916). For example, the intermediate computing device may be configured as a patient wearable device that, while having processing resources that are greater than the IMD, may still have limited processing resources due to size and/or battery limitations of the patient wearable device. Therefore, the agent on the intermediate computing device may execute one or more patient diagnostic algorithms that analyze the data to monitor the patient's condition which are not available to the agent on the IMD. These algorithms, when executed, may also be utilized to determine whether additional processing is needed. For instance, the data, when analyzed through execution of the agent, may indicate that additional patient diagnostic algorithms should be utilized to analyze the data.
At block 918, the analysis agent executed on the intermediate computing device may then invoke a communication agent if additional processing resources are needed. At block 920, the communication agent, when executed, may then determine whether an additional intermediate computing device is available in the hierarchy. If so, the communication agent communicates the data to the next intermediate computing device in the hierarchy at block 922. The next intermediate computing device may then repeat blocks 914-922 of the process 900 to analyze the data and determine whether additional processing resources are needed. In this way, the data may be communicated through successive tiers of the hierarchy for analysis by agents that are executed on computing devices having additional processing resources.
At decision block 920, if another intermediate computing device is not available in the hierarchy, then the data is communicated to the endpoint device through execution of the communication agent (block 924). At block 926, the endpoint device also analyzes the data through execution of an analysis agent to determine the patient's condition as previously described. At block 928, the analysis agent, when executed on the endpoint device, may also determine whether analysis may be completed from data available to the endpoint device. For example, analysis of the data by the analysis agent may indicate that a particular patient diagnostic algorithm should be executed to analyze the data. The patient diagnostic algorithm, however, may require additional data that is not currently available on the endpoint device, such as additional data utilized to indicate a trend over a specified period of time. Therefore, at block 930, the communication agent is executed to request additional data. The requested data may be obtained from a variety of computing devices in the hierarchy. For example, the communication agent may communicate with the IMD, either directly or through the intermediate computing devices, to request additional data from the IMD. Additionally, the communication agent may request data that is stored on one or more of the intermediate computing devices, such as processing results of one or more patient diagnostic algorithms on the intermediate computing devices that are not available on the endpoint device. Thus, the hierarchy may support two-way communication. For example, data describing a patient's condition may flow “up” from the IMD through the intermediate computing devices to the endpoint device, and the endpoint device may also communicate back “down” through the hierarchy to obtain data from the intermediate computing devices and/or the IMD. At block 932, the results of the analysis of the data are communicated to the IMD.
At decision block 1004, the agent determines if additional memory resources are needed to store the data collected by the IMD. The agent, for instance, may compare the amount of memory resources available from the examination of block 1002 with a threshold amount of memory resources. If additional memory resources are needed, the agent communicates at least a portion of the data to an intermediate computing device at block 1006. In this instance, the agent employs a first-in/first-out (FIFO) mechanism to communicate the oldest data. The agent may also employ a variety of other mechanisms.
At decision block 1008, the intermediate computing device, like the IMD, determines if additional memory resources are needed on the intermediate computing device. If not, the process 1000 returns to block 1002. If additional memory resources are needed, the intermediate computing devices execute an agent to examine criticality of the data and previously stored data on the intermediate computing device (block 1010). For example, the intermediate computing device may include data that was previously collected on the IMD and communicated from the IMD to the intermediate computing device. The agent, when executed, may then examine the previously stored data as well as the communicated data to determine which data is most critical to operation of the network system.
Data criticality may be based on a variety of factors. For instance, the data may describe times at which the IMD administered therapy to the patient, such as to restore a normal heart rhythm. Such data may remain stored on the intermediate computing device as well as communicated “up” the hierarchy to additional computing devices, e.g. the endpoint device, for further analysis. Therefore, the intermediate computing device may save data that may be relevant to future diagnosis of the patient and also communicate that data for further analysis.
In another instance, the network system may implement an archiving hierarchy to archive older and greater amounts of data on respective successive tiers of the hierarchy. The criticality of the data, in this instance, may therefore reflect the archiving hierarchy such that newer data is stored “closer” to the IMD for faster communication with the IMD. For example, an intermediate computing device that is directly communicatively coupled with the IMD may have additional analytical capabilities as well as additional memory capabilities to store a greater amount of the patient's diagnostic data than the IMD. The intermediate computing device may analyze the data and determine from the analysis that the IMD should perform one or more therapeutic operations. The intermediate computing device may therefore communicate directly with the IMD and thus initiate the therapeutic operation in a quicker manner than if the intermediate computing device had to communicate with the IMD through one or more additional computing devices.
At decision block 1012, the intermediate computing device, through execution of the agent, determines if an additional computing device is available. The agent, for instance, may include a communications agent that, when executed, determines if other computing devices are communicatively coupled to the intermediate computing device over a network. If an additional computing device is not available, then at block 1014, the data is stored until the memory is full, after which, the least critical data is replaced in the memory with data having a higher criticality as was described in relation to block 1010. If an additional computing device is available, the least critical data is communicated to the next computing device at block 1016 and the process 1000 continues at block 1008. Thus, in this exemplary process 1000, data is communicated “up” successive tiers of the hierarchy based on memory resources and criticality of the data. Data may be managed in a variety of other ways in the network system, additional examples of which are described in relation to
The agents 1102-1110, when executed on respective computing devices, manage data in the hierarchy in a variety of ways. For example, as previously described in relation to
In another example, the agents 1104-1110 may “pull” data from a previous tier in the hierarchy. For instance, agent 1104 may be executed on the intermediate computing device 202(1) to monitor the memory 1112 of the IMD 102. The agent 1104 may monitor the memory in a variety of ways, such as through direct monitoring by the agent 1104 or through communication with the agent 1102 that is executed on the IMD 102. When the memory 1112 passes a described threshold, the agent 1104 may read and erase data from the memory 1112 to make additional memory resources available to the agent 1102 on the IMD 102. Thus, in this example, each of the agents 1104-1110 is executable to examine data located on another computing device in the hierarchy 1100.
In yet another example, each of the agents 1102-1110 of the hierarchy may communicate, one to another, to manage data in the network system as a whole. Each of the agents 1102-1110, for instance, may communication with other agents 1102-1110 in the hierarchy 1100 to determine the memory resources on each computing device in the hierarchy, amount of data stored by each of the computing devices, and so on. Communication may be performed in a variety of ways. For instance, each agent may communicate with agents located immediately “next” to the agent. For example, agent 1104 may communicate directly with agent 1102 and agent 1106 to discover available memory resources on the IMD 102 and the intermediate computing device 202(m), respectively. The agent 1104 may also communicate data regarding the memory resources of the intermediate computing device 202(m) to the IMD 102. Thus, the IMD 102 may be made “aware” of both the presence and the memory resources of the intermediate computing device 202(m). In another implementation, each of the agents 1102-1110 may communicate directly with other agents of the hierarchy 1100.
Further, communication between agents 1102-1110 in the hierarchy 1100 may be utilized for dynamic management of data in the hierarchy. For instance, the agents 1102-1110 may respond to changing states of each of the computing devices in the hierarchy and rearrange the data according. In an example, the data is communicated based on pending unavailability of one or more of the computing devices, which may be caused by a hardware, software, and/or network failure. Intermediate computing device 202(m) executes the agent 1106, for instance, which determines that failure of the intermediate computing device 202(m) is imminent, such as through one or more diagnostic algorithms that monitor the operation of the computing device. In another instance, the intermediate computing device 202(m) may become unavailable due to removal of the device from the network system, such as when a patient leaves a doctor's office. The agent 1106, in response to the impending unavailability, communicates data 1126(1)-1126(2) to intermediate computing device 202(1) and data 1126(3)-1126(4) to intermediate computing device 202(M). Thus, the data may remain available to other agents 1102,1104, 1108, 1110 of the hierarchy 1100 even when the intermediate computing device 202(m) is no longer available.
One or more of the agents 1102-1110 may also be executed to provide a variety of other data management mechanisms. For instance, agent 1102 may be executed on the IMD 102 at periodic intervals to upload data from the IMD 102 through the intermediate computing devices 202(1)-202(M) to the endpoint device 140. In another instance, the agents 1102-1110 may be executed to communicate software upgrades from the endpoint device 140 to the intermediated computing devices 202(1)-202(M) and the IMD 102 as described in relation to
At decision block 1208, a determination is made to determine whether the endpoint device is directly reachable. For example, a communication agent may be executed to locate the endpoint device and determine whether the device is reachable over a network. For instance, the IMD may perform the analyzing, determining, and indicating of blocks 1202-1206. The IMD, however, may not have sufficient power to directly communicate with the endpoint device. At block 1210, the IMD may communicate the data to an intermediate computing device by establishing a link with an intermediate computing device by invoking a communication agent. If a link is established at block 1212, then the data is communicated to the intermediate computing device (block 1214).
At decision block 1216, the intermediate computing device may determine whether the data is critical. For example, the indication provided at block 1206 may cause the intermediate computing device to automatically invoke a communication agent to immediately communicate the data. Thus, the data may be communicated immediately by the intermediate computing device without being first analyzed using one or more patient diagnostic algorithms. If the data is critical, the process 1200 returns to block 1208 such that the intermediate computing device determines if the endpoint device is directly reachable. Continuing with the previous example, the intermediate computing device, for instance, may be configured as the networked programmer 114 of
At block 1208, if the endpoint is directly reachable, then the critical data is communicated to the endpoint device, which then stores the data in a central database (block 1218). At block 1220, the endpoint device also determines whether to notify a knowledge worker to the existence of the critical data. For instance, if the knowledge worker is carrying a PDA or phone, a statement may be sent by the endpoint device that “Patient X has an irregular heart beat”.
If the data is not determined to be critical at block 1204, the process 1200 moves to block 1214 to communicate the data to an intermediate computing device. If a result of the determination at block 1216 is that the data is not critical (e.g., a critical flag is not set in the data), then the data is analyzed at block 1222 by the intermediate computing device using one or more patient diagnostic algorithms and the process returns to block 1204. In this way, each successive tier of the hierarchy may determine whether data is critical using one or more patient diagnostic algorithms. When the data is determined to be critical, the data is communicated to the endpoint device without first being analyzed by other intermediate computing devices. Even though the data is communicated without first being analyzed, however, the data may still be analyzed by each successive tier through execution of respective analysis agents.
In one example, software updates 1302(1)-1302(4) (updates) are communicated from the endpoint device 140 to respective computing devices of the hierarchy 1300. For instance, the endpoint device 140 may specify updates that are for specific computing devices of the hierarchy 1300. Updates 1302(1) may be configured for the intermediate computing device 202(M) and therefore communicated directly from the endpoint device 140 to the intermediate computing device 202(M) over the network 118. Updates 1302(4), however, are for updating software on the IMD 102, such as the agent 1102. Therefore, the updates 1302(4) are communicated from the endpoint device 140 through each of the intermediate computing devices 202(1)-202(M) to the IMD 102. Similar techniques may be utilized to communicate updates 1302(2), 1302(3) to intermediate computing devices 202(m), 202(1), respectively.
Likewise, parameters 1304(1)-1304(4) may be communicated from the endpoint device 140 to the intermediate computing devices 202(1)-202(M) and/or the IMD 102. The parameters 1304(1), 1304(2), 1304(3), 1304(4) may be utilized by respective agents 1108, 1106, 1104, 1102 in analyzing the patient's condition as was previously described in relation to
IMD 1402, for instance, may be configured as an implantable medical dosing device that outputs one or more medications internally to the patient 104. The patient 104 may also include an external medical device 1404 (EMD) that is configured to collect patient diagnostic data externally from the patient 104, such as a blood-pressure monitor. Data from the plurality of medical devices, i.e. IMD 102, IMD 1402, EMD 1404, may be aggregated for analysis by an analysis agent 1406 executed on an intermediate computing device 202(m). For example, the analysis agent 1406 may include an aggregating agent 1408 that combines data points from the various medical devices. The aggregating agent 1408 may intelligently combine the data points such that similar data points are compared for inconsistencies and omissions. For example, the IMD 102 and the EMD 1404 may both provide patient diagnostic data that describes a patient's pulse. The aggregating agent 1408, when comparing the data from both devices, may therefore check the operation of the devices. Additionally, data provided by one of the devices may be utilized as a backup should one of the other devices fail.
The analysis agent 1406, when executed, may then utilize the data from the variety of devise to analyze the patient's condition. The combined data may also be communicated to the endpoint device 140 for analysis by an analysis agent 1410 executed thereon as previously described.
Although the invention has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claimed invention.