This application relates generally to mechanical circulatory support systems, and more specifically relates to control systems and methods, for an implantable blood pump.
Ventricular assist devices, known as VADs, are implantable blood pumps used for both short-term (i.e., days, months) and long-term applications (i.e., years or a lifetime) where a patient's heart is incapable of providing adequate circulation, commonly referred to as heart failure or congestive heart failure. According to the American Heart Association, more than five million Americans are living with heart failure, with about 670,000 new cases diagnosed every year. People with heart failure often have shortness of breath and fatigue. Years of living with blocked arteries or high blood pressure can leave your heart too weak to pump enough blood to your body. As symptoms worsen, advanced heart failure develops.
A patient suffering from heart failure, also called congestive heart failure, may use a VAD while awaiting a heart transplant or as a long term destination therapy. In another example, a patient may use a VAD while recovering from heart surgery. Thus, a VAD can supplement a weak heart (i.e., partial support) or can effectively replace the natural heart's function. VADs can be implanted in the patient's body and powered by an electrical power source inside or outside the patient's body.
As VAD systems continue to develop, the prevalence of implantable technologies such as electronics continues to rise in its implementation in such systems. In particular, software updates to electronics associated with the VAD can be complicated and costly. For example, such an update may require ex-plantation of the VAD, which requires an additional surgery and further patient discomfort. Thus, new systems, methods, and devices are desired to facilitate efficient updates of electronics associated with a VAD.
The present invention provides new systems, methods, and devices which can advantageously allow for updates to implantable electronics associated with the VAD non-invasively or minimally invasively and without ex-plantation. For example, when a control unit is integrated in a VAD, there is no need to surgically replace or explant the blood pump in order to upgrade the VAD. This is clearly advantageous from a patient's perspective who has heart failure, as this means no additional surgeries or recovery time, and for the healthcare system means lower cost of care. Further this invention provides a modality for access to the latest technologies or features via the software upgrade. These upgrades may be transmitted via a hardwire or cable, or wirelessly. The inventions of the present invention have numerous electro-mechanical and therapeutic effects as described herein.
Embodiments of the present disclosure relate to a mechanical circulatory support system. The mechanical circulatory support system can include a controller that can generate a signal initiating an update process and that can transmit update information. The mechanical circulatory support system can include an implantable blood pump that can be communicatively coupled to the controller. The blood pump can include a rotor, and a control unit that can be communicatively coupled with the rotor. The control unit can include instructions to control the motion and position of the rotor, to receive the signal initiating the update process, and to temporarily stop the rotor in response to the signal initiating the update process.
In some embodiments of the mechanical circulatory support system, the rotor can include impeller blades. In some embodiments, the rotor can be radially levitated and driven by the control unit. In some embodiments, the control unit can include instructions to receive an update, to verify the update, and to store the update in place of an un-updated application. In some embodiments, these can be performed while the rotor is temporarily stopped. In some embodiments, the control unit can include instruction to restart movement of the rotor after the update has been verified.
In some embodiments of the mechanical circulatory support system, the rotor can be temporarily stopped for a period of less than 30 seconds, 45 seconds, 1 minute, 2 minutes, 5 minutes, 10 minutes, or any other or intermediate length of time. It will be appreciated that the preceding time ranges are important for clinical utility. In particular, being able to perform the upgrade in a specified or predetermined time period is important so that temporarily stopping the rotor does not result in any adverse effects on the patient who depends on operation of the VAD to supplement or replace the pumping function of the heart. In some embodiments, the mechanical circulatory support system further includes a first application comprising parameters for rotor control and a second application comprising parameters for rotor control. In some embodiments, the processor includes instructions to not erase one of the first and second applications during the update process.
In some embodiments of the mechanical circulatory support system, the control unit can include flash memory that can include a plurality of partitions. In some embodiments, at least two of the partitions can include applications including parameters for controlling the operation of the blood pump. These parameters can define at least one of pump speed and a mode of operation, which can include, for example, pulsatile or non-pulsatile operation. In some embodiments, the controller can be an external controller that can include instructions to wirelessly transmit update information or an external controller having a driveline coupled to the implantable pump to transmit update information.
In one aspect, the present disclosure relates to an implantable blood pump. The implantable blood pump includes a rotor, and a control unit communicatively coupled with the rotor and including memory having a plurality of partitions. In some embodiments, a plurality of applications are loaded in at least some of the partitions. The control unit can include instructions to control the motion and position of the rotor, and temporarily stop the rotor in response to a signal initiating an update process.
In some embodiments of the implantable blood pump, each of the applications of the plurality of applications are uniquely associated with a datum and data identifying the time of the loading of each of the applications into the partition. In some embodiments, the control unit can include instructions to direct the control unit to select one of the applications of the plurality of applications for replacement. In some embodiments, the one of the applications of the plurality of applications is selected for replacement if the datum associated with the application does not match a datum generated by the control unit, or if the application data identifying the time of the loading of the application into the partition identifies the application as the earliest loaded application of the plurality of applications.
In some embodiments of the implantable blood pump, the plurality of applications can include a first application and a second application. In some embodiments, the first and second applications can include instructions for controlling the operation of the rotor. In some embodiments, the control unit can include instructions to not erase one of the plurality of applications during the update process, and in some embodiments, the control unit can include instructions to direct the restart of movement of the rotor after the completion of the update.
In some embodiments of the implantable blood pump, the update is completed after one of: verification of the update, and a passage of a predetermined amount of time. In some embodiments, the rotor can be restarted according to one of the plurality of applications after the passage of the predetermined amount of time.
In one aspect, the present disclosure relates to a method of updating an implantable blood pump. The method includes determining initiation of an update process within an implantable control unit included as part of the implantable blood pump, stopping the blood pump for a predetermined amount of time, receiving an update while the blood pump is stopped, and restarting the blood pump after the completion of the update process.
In some embodiments, the method can include verifying the update and replacing an un-updated application with the update. In some embodiments, the method of updating an implantable blood pump can include identifying one of a plurality of un-updated applications for replacement by the updated application. In some embodiments, the identification of one of the plurality of un-updated applications can include generation of a datum, such as a checksum, based on the one of the un-updated applications. In some embodiments, the implantable blood pump can be updated non-invasively or without ex-plantation. In some embodiments, receiving the update can include wirelessly receiving update information. In some embodiments, stopping the blood pump can include one of generating a stop signal and cutting power to a rotary motor.
Further areas of applicability of the present disclosure will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples, while indicating various embodiments, are intended for purposes of illustration only and are not intended to necessarily limit the scope of the disclosure.
With reference to
Referring to
The puck-shaped housing 110 further includes a peripheral wall 116 that extends between the first face 111 and a removable cap 118. As illustrated, the peripheral wall 116 is formed as a hollow circular cylinder having a width W between opposing portions of the peripheral wall 116. The housing 110 also has a thickness T between the first face 111 and the second face 113 that is less than the width W. The thickness T is from about 0.5 inches to about 1.5 inches, and the width W is from about 1 inch to about 4 inches. For example, the width W can be approximately 2 inches, and the thickness T can be approximately 1 inch.
The peripheral wall 116 encloses an internal compartment 117 that surrounds the dividing wall 115 and the blood flow conduit 103, with the stator 120 and the electronics 130 disposed in the internal compartment 117 about the dividing wall 115. The removable cap 118 includes the second face 113, the chamfered edge 114, and defines the outlet opening 105. The cap 118 can be threadedly engaged with the peripheral wall 116 to seal the cap 118 in engagement with the peripheral wall 116. The cap 118 includes an inner surface 118a of the cap 118 that defines the volute 107 that is in fluid communication with the outlet opening 105.
Within the internal compartment 117, the electronics 130 are positioned adjacent to the first face 111 and the stator 120 is positioned adjacent to the electronics 130 on an opposite side of the electronics 130 from the first face 111. The electronics 130 include circuit boards 131 and various components carried on the circuit boards 131 to control the operation of the pump 100 (e.g., magnetic levitation and/or drive of the rotor) by controlling the electrical supply to the stator 120. The housing 110 is configured to receive the circuit boards 131 within the internal compartment 117 generally parallel to the first face 111 for efficient use of the space within the internal compartment 117. The circuit boards also extend radially-inward towards the dividing wall 115 and radially-outward towards the peripheral wall 116. For example, the internal compartment 117 is generally sized no larger than necessary to accommodate the circuit boards 131, and space for heat dissipation, material expansion, potting materials, and/or other elements used in installing the circuit boards 131. Thus, the external shape of the housing 110 proximate the first face 111 generally fits the shape of the circuits boards 131 closely to provide external dimensions that are not much greater than the dimensions of the circuit boards 131.
With continued reference to
Each of the pole piece 123a-123f is L-shaped and has a drive coil 125 for generating an electromagnetic field to rotate the rotor 140. For example, the pole piece 123a has a first leg 124a that contacts the back iron 121 and extends from the back iron 121 towards the second face 113. The pole piece 123a may also have a second leg 124b that extends from the first leg 124a through an opening of a circuit board 131 towards the dividing wall 115 proximate the location of the permanent magnet 141 of the rotor 140. In an aspect, each of the second legs 124b of the pole pieces 123a-123f is sticking through an opening of the circuit board 131. In an aspect, each of the first legs 124a of the pole pieces 123a-123f is sticking through an opening of the circuit board 131. In an aspect, the openings of the circuit board are enclosing the first legs 124a of the pole pieces 123a-123f.
In a general aspect, the implantable blood pump 100 may include a Hall sensor that may provide an output voltage, which is directly proportional to a strength of a magnetic field that is located in between at least one of the pole pieces 123a-123f and the permanent magnet 141, and the output voltage may provide feedback to the control electronics 130 of the pump 100 to determine if the rotor 140 and/or the permanent magnet 141 is not at its intended position for the operation of the pump 100. For example, a position of the rotor 140 and/or the permanent magnet 141 may be adjusted, e.g. the rotor 140 or the permanent magnet 141 may be pushed or pulled towards a center of the blood flow conduit 103 or towards a center of the stator 120.
Each of the pole pieces 123a-123f also has a levitation coil 127 for generating an electromagnetic field to control the radial position of the rotor 140. Each of the drive coils 125 and the levitation coils 127 includes multiple windings of a conductor around the pole pieces 123a-123f. Particularly, each of the drive coils 125 is wound around two adjacent ones of the pole pieces 123, such as pole pieces 123d and 123e, and each levitation coil 127 is wound around a single pole piece. The drive coils 125 and the levitation coils 127 are wound around the first legs of the pole pieces 123, and magnetic flux generated by passing electrical current though the coils 125 and 127 during use is conducted through the first legs and the second legs of the pole pieces 123 and the back iron 121. The drive coils 125 and the levitation coils 127 of the stator 120 are arranged in opposing pairs and are controlled to drive the rotor and to radially levitate the rotor 140 by generating electromagnetic fields that interact with the permanent magnetic poles S and N of the permanent magnet 141. Because the stator 120 includes both the drive coils 125 and the levitation coils 127, only a single stator is needed to levitate the rotor 140 using only passive and active magnetic forces. The permanent magnet 141 in this configuration has only one magnetic moment and is formed from a monolithic permanent magnetic body 141. For example, the stator 120 can be controlled as discussed in U.S. Pat. No. 6,351,048, the entire contents of which are incorporated herein by reference for all purposes. The control electronics 130 and the stator 120 receive electrical power from a remote power supply via a cable 119 (
The rotor 140 is arranged within the housing 110 such that its permanent magnet 141 is located upstream of impeller blades in a location closer to the inlet opening 101. The permanent magnet 141 is received within the blood flow conduit 103 proximate the second legs 124b of the pole pieces 123 to provide the passive axial centering force though interaction of the permanent magnet 141 and ferromagnetic material of the pole pieces 123. The permanent magnet 141 of the rotor 140 and the dividing wall 115 form a gap 108 between the permanent magnet 141 and the dividing wall 115 when the rotor 140 is centered within the dividing wall 115. The gap 108 may be from about 0.2 millimeters to about 2 millimeters. For example, the gap 108 is approximately 1 millimeter. The north permanent magnetic pole N and the south permanent magnetic pole S of the permanent magnet 141 provide a permanent magnetic attractive force between the rotor 140 and the stator 120 that acts as a passive axial centering force that tends to maintain the rotor 140 generally centered within the stator 120 and tends to resist the rotor 140 from moving towards the first face 111 or towards the second face 113. When the gap 108 is smaller, the magnetic attractive force between the permanent magnet 141 and the stator 120 is greater, and the gap 108 is sized to allow the permanent magnet 141 to provide the passive magnetic axial centering force having a magnitude that is adequate to limit the rotor 140 from contacting the dividing wall 115 or the inner surface 118a of the cap 118. The rotor 140 also includes a shroud 145 that covers the ends of the impeller blades 143 facing the second face 113 that assists in directing blood flow into the volute 107. The shroud 145 and the inner surface 118a of the cap 118 form a gap 109 between the shroud 145 and the inner surface 118a when the rotor 140 is levitated by the stator 120. The gap 109 is from about 0.2 millimeters to about 2 millimeters. For example, the gap 109 is approximately 1 millimeter.
As blood flows through the blood flow conduit 103, blood flows through a central aperture 141a formed through the permanent magnet 141. Blood also flows through the gap 108 between the rotor 140 and the dividing wall 115 and through the gap 109 between the shroud 145 and the inner surface 108a of the cap 118. The gaps 108 and 109 are large enough to allow adequate blood flow to limit clot formation that may occur if the blood is allowed to become stagnant. The gaps 108 and 109 are also large enough to limit pressure forces on the blood cells such that the blood is not damaged when flowing through the pump 100. As a result of the size of the gaps 108 and 109 limiting pressure forces on the blood cells, the gaps 108 and 109 are too large to provide a meaningful hydrodynamic suspension effect. That is to say, the blood does not act as a bearing within the gaps 108 and 109, and the rotor is only magnetically-levitated. In various embodiments, the gaps 108 and 109 are sized and dimensioned so the blood flowing through the gaps forms a film that provides a hydrodynamic suspension effect. In this manner, the rotor can be suspended by magnetic forces, hydrodynamic forces, or both.
Because the rotor 140 is radially suspended by active control of the levitation coils 127 as discussed above, and because the rotor 140 is axially suspended by passive interaction of the permanent magnet 141 and the stator 120, no rotor levitation components are needed proximate the second face 113. The incorporation of all the components for rotor levitation in the stator 120 (i.e., the levitation coils 127 and the pole pieces 123) allows the cap 118 to be contoured to the shape of the impeller blades 143 and the volute 107. Additionally, incorporation of all the rotor levitation components in the stator 120 eliminates the need for electrical connectors extending from the compartment 117 to the cap 118, which allows the cap to be easily installed and/or removed and eliminates potential sources of pump failure.
In use, the drive coils 125 of the stator 120 generates electromagnetic fields through the pole pieces 123 that selectively attract and repel the magnetic north pole N and the magnetic south pole S of the rotor 140 to cause the rotor 140 to rotate within stator 120. For example, the Hall sensor may sense a current position of the rotor 140 and/or the permanent magnet 141, wherein the output voltage of the Hall sensor may be used to selectively attract and repel the magnetic north pole N and the magnetic south pole S of the rotor 140 to cause the rotor 140 to rotate within stator 120. As the rotor 140 rotates, the impeller blades 143 force blood into the volute 107 such that blood is forced out of the outlet opening 105. Additionally, the rotor draws blood into pump 100 through the inlet opening 101. As blood is drawn into the blood pump by rotation of the impeller blades 143 of the rotor 140, the blood flows through the inlet opening 101 and flows through the control electronics 130 and the stator 120 toward the rotor 140. Blood flows through the aperture 141a of the permanent magnet 141 and between the impeller blades 143, the shroud 145, and the permanent magnet 141, and into the volute 107. Blood also flows around the rotor 140, through the gap 108 and through the gap 109 between the shroud 145 and the inner surface 118a of the cap 118. The blood exits the volute 107 through the outlet opening 105, which may be coupled to an outflow cannula.
In some embodiments, the software applications of the blood pump 100 can include, for example, an initial program loader (IPL), loader software, and/or application software. In some embodiments, the IPL can be configured to select and load one or several software applications corresponding to one or several modes of operation of the blood pump 100. In some embodiments, these one or several modes of operation of the blood pump 100 can include an operation mode, a test mode, a fault mode, or the like. The selecting and loading of one or several software applications corresponding to one or several modes of operation of the blood pump 100 can include, for example, selecting and loading one or several of the loader software and/or the application software. In some embodiments, the IPL can include information relating to one or several failsafe and/or fault protocols that can be used by the blood pump 100. Some of these failsafe and/or fault protocols will be discussed at length below.
The loader software, can, in some embodiments, be configured to direct the operation of the blood pump 100 during the loading of one or several software applications onto the blood pump 100. This direction of the operation of the blood pump 100 during loading of one or several software applications can include, for example, directing the blood pump 100 to stop operation during the loading of the one or several software applications or directing the blood pump 100 to continue operation during the loading of the one or several software applications according to a previously received software application. These one or several software applications can include, for example, one or several application softwares, one or several IPL applications, or the like. In some embodiments, the loader software can prescribe one or several processes for updating and/or loading one or several software applications onto the blood pump 100. These processes and associated failsafes will be discussed in greater details below.
The application software can include one or several parameters for directing the pumping operation of the blood pump 100. In some embodiments, the application software can comprise one of a clinical application software which can be configured to control the operation of the blood pump 100 when implanted in a patient, and in some embodiments, the application software can comprise a production software that can be configured to control the operation of the blood pump 100 during production and/or testing of the blood pump 100.
In some embodiments, these parameters can specify a control or control regimen for the position and/or motion of the rotor 140. For example, these parameters can specify the aspects of the levitation control and/or rotation control of the rotor 140.
In some embodiments, the parameters of the application software can specify, for example a desired performance of the blood pump 100 and/or one or several desired performance parameters, such as, for example, a desired pump speed, and desired pumped flow rate, a pulse generation, or the like. In some embodiments, these parameters can be actively used to control the operation of the blood pump 100, and in some embodiments these parameters can be stored during normal operation of the blood pump 100 and used as part of one or several failsafe and/or fault protocols. In some embodiments, the parameters of the application software can specify the generation and/or collection of data from the blood pump 100 and/or interfacing of the blood pump 100 to other components of the mechanical circulatory support system 10.
In some embodiments, the application software can comprises a first application software containing parameters relating to the current operation of the blood pump, and in some embodiments, the application software can comprise a second application software containing parameters unrelated to the current operation of the blood pump 100. In one embodiment, for example, the blood pump 100 can comprise the second application software as a backup to the first application software. In some embodiments, the first application software can be identical to the second application software, and in some embodiments, the first application can be different than the second application software.
The control unit 202 can include a processor 204. The processor 204 can provide instructions to, and receive information from the other components of the blood pump 100 and/or from the other components of the mechanical circulatory support system 10. The processor 204 can act according to stored instructions, which stored instructions can be located in memory 206 associated with the processor 204 and/or in other components of the blood pump 100 and/or of the mechanical circulatory support system 10. The processor 204 can comprise a microprocessor, such as a microprocessor from Intel® or Advanced Micro Devices, Inc.®, or the like.
In some embodiments, the stored instructions directing the operation of the processor 204 may be implemented by hardware, software, scripting languages, firmware, middleware, microcode, hardware description languages, and/or any combination thereof. When implemented in software, firmware, middleware, scripting language, and/or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as a storage medium. A code segment or machine-executable instruction may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a script, a class, or any combination of instructions, data structures, and/or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, and/or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
As seen in
In some embodiments, the memory 206 can be divided into one or several partitions. In one embodiment in which the memory 206 contains a plurality of software applications, the memory 206 can be divided into a plurality of partitions so as to be, for example, in a one to one relationship with the number of software applications in the plurality of software applications. In some embodiments, some or all of the software applications stored in the memory 206 can be stored in a unique one of the partitions in the memory 206. In one embodiment in which the memory 206 comprises a volatile portion and a nonvolatile portion, the partitions can be created in one or both of the volatile portion and the nonvolatile portion. Specifically, in one embodiment in which the memory 206 comprises RAM and flash memory, the flash memory can be divided into a plurality of partitions. In some embodiments, the plurality of software applications can be stored in the plurality of partitions in the flash memory.
As described above, the processor 204 can send information and/or signals with and/or receive information and/or signals from the communications module 208. The communications module 208 can include features configured to send and receive information, including, for example, an antenna, a transmitter, receiver, or any other feature that can send and receive information. The communications module 208 can communicate via a wired or wireless link with, for example, the system controller 20 and/or the rotary motor 200. In some embodiments, the communications module 208 can communicate via cellular networks, WLAN networks, or any other wireless network. In some embodiments, the blood pump 100 can be configured to generate a signal in response to some or all communications received from the system controller 20, and/or to not generate a signal to the system controller 20 unless a signal from the system controller 20 has been first received by the blood pump 100.
After the IPL is running, the process 220 proceeds to block 226 wherein the IPL selects one or several software applications for control of the blood pump 100. In some embodiments, the one or several software applications can be selected from the memory 206. After the one or several software applications have been selected, the process 220 proceeds to block 228 wherein the IPL determines the validity of the one or several selected software applications. In some embodiments, this can include the determination of the functionality of the one or several software applications and/or the detection of any faults and/or errors in, or caused by the one or several selected software applications.
After the IPL has determined the validity of the one or several selected software applications, the process 220 proceeds to block 230 wherein the IPL retrieves the one or several selected software applications from the memory 206 and starts the one or several selected software applications. As specifically seen in
In some embodiments, and as seen in
After the update initiation signal has been received, the process 300 proceeds to block 304 wherein a timer is started. In some embodiments, the timer can be an integral component of the control unit 202 and can track one or several times and/or time periods. In some embodiments, the timer can track the total lapsed time of the update. The timer can be used to trigger one or several errors if an action or process does not occur or terminate within a predetermined time period. In one embodiment, for example, an error can be triggered if the update lasts longer than a certain time period such as, for example, 5 seconds, 10 seconds, 30 seconds, one minute, two minutes, three minutes, five minutes, 10 minutes, and/or any other or intermediate time period.
In some embodiments, the timer can track the amount of time between events, such as, for example, between communications from the system controller 20. In one embodiment, for example, the system controller 20 can periodically communicate with the blood pump 100 during the duration of the update. In one embodiment, for example, an error can be triggered if a communication is not received from the system controller 20 within a designated time period, which time period can be, for example, 1 second, 2 seconds, 5 seconds, 10 seconds, 20 seconds, or any other or intermediate timer period.
After the update initiation signal has been received, the process 300 proceeds to block 306 wherein the blood pump 100 is stopped. In some embodiments, the blood pump 100 and/or rotary motor 200 can be stopped by the control unit 202. The control unit 202 can generate a stop signal and send the stop signal to the stator 120 of the blood pump 100, and/or can cut power to the stator 120 of the blood pump 100. In some embodiments, the power can be selectively cut and/or decreased, and specifically, the power provided to the stator 120 and/or components of the stator 120 can be selectively cut and/or decreased to thereby stop the motion of the rotor 140. In some embodiments, the stopping of the blood pump 100 can be performed according to one or several stopping algorithms contained in the memory 206 of the control unit 202.
After the pump has been stopped, the process 300 proceeds to block 308 wherein the update application is received. In some embodiments, the update application can be received from the system controller 20 via the communications module 208. The update application can include application software and application software information associated with and/or corresponding to the application software.
After the update application has been received, the process 300 proceeds to block 310, wherein the application for update is identified. In some embodiments, the application for update is the application that is being replaced by the update application. The application for update can be one of the IPL, the loader software, and/or one of the application softwares. In some embodiments, as the memory may include a plurality of the IPL, the loader software, and/or of the application softwares, the identification of the application for update can include selecting one of the IPL, the loader software, and/or the application softwares. Any of the IPL, the loader software, and/or the application softwares that are evaluated for selection as the application for update are referred to herein as the “potential update applications.”
In some embodiments in which the application software is uploaded, the potential update applications can include the first application software 266 and the second application software 268. In some embodiments, in which the first and second application softwares 266, 268 are the potential update applications, one of the first and second application softwares 266, 268 can be selected as the application for update. In some embodiments in which one of the IPL and/or the software loader are the potential update applications, the potential update applications can include the copies of the IPL and/or the software loader stored in partition 0264-A and partition 1264-B. In some embodiments, one of these copies can be selected as the application for update. Advantageously, by selecting one of the potential update applications as the application for update, the other of the potential update applications is/are unaffected by the update process, and can be used as a failsafe in the event that the update is not successful. In such an event, the other of the update applications can be used to control operation of the blood pump 100, and can, in some embodiments, be copied into the partition that contained the selected one of the potential update applications. Similarly, in some embodiments in which one of the first and second application softwares 266, 268 is selected for update, the other of the first and second application softwares 266, 268 is unaffected by the update process, and can be used as a failsafe in the event that the update is not successful.
In some embodiments, one of the potential update applications can be selected as the application for update. In some embodiments, the application for update can be selected based on the amount of time passed since the uploading of each of the potential update applications and/or errors in one or more of the potential update applications.
In some embodiments, the identification of the application for update can include determining the indicated placement for the update application and determining the type of the update application. In some embodiments, the indicated placement for the update application can include identification of one or several partitions in which the update application may be stored, in other words, the partitions currently containing the potential update applications. In some embodiments, the indicated placement for the update application can be compared to the type of the update application to determine if the indicated placement corresponds with the type of the update application. This can occur, for example if the indicated placement corresponds to a partition designated for one of the IPL and/or loader software, and the type of update application corresponds to an application software. In some embodiments, if the indicated placement does not correspond with the type of the update application, the process 300 can terminate, the update can terminate, an error can be identified, and/or the pumping of the blood pump 100 can be restarted.
In some embodiments, if the indicated placement corresponds with the type of the update application, the identification of the application for update can include identifying errors in one or several of the potential update applications. In some embodiments, these errors can be identified by generating a datum for each of the potential update applications and comparing the generated datums to a stored datum for the corresponding one of the potential update applications from which the datum was generated. If the generated datum matches the stored datum, then no error is detected. Conversely, a discrepancy between the generated datum and the stored datum can indicate an error in the application associated with the datums. In some embodiments, the existence of a discrepancy between the generated datum and the stored datum associated with a software application can result in the selection of that software application for update. Thus, in one embodiment, a software application containing an error as evidenced by a discrepancy between the generated datum and the stored datum can be replaced via the update process, thereby facilitating the maintenance of error free software applications and error free operation of the blood pump 100.
In some embodiments, if no discrepancy is detected between the generated datums and the stored datums for the potential update applications, the identification of the application for update can include comparison of the time elapsed between the uploading of the potential update applications. In some embodiments, this comparison can be based on portions of the application software information identifying the time of upload of an associated software application. In one embodiment, for example, the one of the potential update applications uploaded earliest can be selected as the application for update.
After the application for update has been identified, the process 300 proceeds to block 312, wherein the application for update is deleted. In some embodiments, the application for update can be deleted from the partition in which it is stored. In some embodiments, the deletion of the application for update can include the deletion of the application software information associated with the application for update.
After the application for update has been deleted, the process 300 proceeds to block 314, wherein the update application is verified. In some embodiments, this verification can include generation of a datum for the update application and comparison of the generated datum with a datum received with update application in block 303. In some embodiments, the received datum can be, for example, part of the application software information received in block 308. If it is determined that the generated datum does not match the received datum, an error can be identified, the update can be terminated, and the pumping of the blood pump 100 can be restarted. In some embodiments, the pumping of the blood pump 100 can be restarted using the other of the potential update applications that is unaffected by the update process.
If it is determined that the generated datum matches the datum received with the update application in block 308, then the process proceeds to block 316, wherein the update application is stored. In some embodiments, the update application can be stored in the partition in which the application for update was stored. In some embodiments, the storage of the update application in the appropriate partition can include the storage of the application software information associated with the update application in that same partition. In some embodiments, after the update application has been stored, the verification of block 314 can, in some embodiments, be repeated to validate the proper storage of the application.
After the update application has been stored, the process 300 proceeds to block 318, wherein the pumping of the blood pump 100 is restarted. In some embodiments, the pumping of the blood pump 100 can be restarted, and the blood pump 100 can be operated according to the parameters and instructions contained in the update application.
After the update initiation signal has been received, the process 400 proceeds to block 402, wherein a timer is started. In some embodiments, the timer can be an integral component or function of the control unit 202 and can track one or several times and/or time periods. In some embodiments, the timer can track the total lapsed time of the update, and/or the timer can track the amount of time between events such as, for example, between communications received from the system controller 20.
After the timer has been started, the process 400 proceeds to block 404, wherein communication period information is received. In some embodiments, the communication period can identify, for example, an anticipated and/or desired frequency with which communications are expected from the system controller 20. In one embodiment, for example, the identification of the communication period can indicate that a communication is expected from the system controller 20 every 10 seconds, every five seconds, every second, twice a second, five times a second, ten times a second, and/or any other or intermediate frequency.
In some embodiments, the communication period can identify the maximum length of time that can pass without receiving a communication from the system controller 20 before an error is identified and/or an alarm is triggered. In one embodiment, for example, this amount of time can be one minute, thirty seconds, ten seconds, five seconds, one second, 0.5 seconds, or any other or intermediate length of time. The communication period information can identify the anticipated frequency of communication and/or the maximum allowable length of time between communications.
After the communication period identification has been received, the process 400 proceeds to block 406, wherein the end of the communication period is defined and/or determined. This end can be determined with a combination of the time of the last received communication and the communication period information. After the end of the communication period has been defined, the process 400 proceeds to decision state 408, wherein it is determined if a communication was received from the system controller 20 by the end of the communication period. If it is determined that a communication was not received, then the process 400 proceeds to block 410, wherein an error is triggered, to block 412, wherein the update process is cancelled, and to block 414, wherein the pumping of the blood pump 100 is restarted.
If it is determined that the communication has been received, then the process 400 proceeds to block 416, wherein the upload time limit is received. In some embodiments, the steps of blocks 404 through 406 can be repeated until the update process has terminated.
Returning again to block 416, in some embodiments, the upload time limit can define a maximum duration for the completion of the upload process. In some embodiments, the upload time limit can identify a maximum time of 30 seconds, 1 minute, 2 minutes, 3 minutes, 4 minutes, 4 minutes and 50 seconds, 5 minutes, 10 minutes, 20 minutes, and/or any other or intermediate time. In some embodiments, the upload time limit can be selected based on physical attributes of a human body such as, for example, safe durations of time for restricted blood flow. In some embodiments, the upload time limit can be the same for multiple patients, and in some embodiments, the upload time limit can be customized for a patient based on a patient attribute such as, for example, health, heart function, bodyweight, and/or the like.
After the upload time limit has been received, the process 400 proceeds to block 418 wherein the end of the time period defined by the upload time limit is identified. After the end of the time period defined by the upload time limit has been identified, the process 400 proceeds to decision state 420, wherein it is determined if the upload is complete. In some embodiments, this determination can include determining whether the pumping of the blood pump 100 has been restarted. If the upload is complete, then the process 400 can proceed to block 414, wherein the pumping of the blood pump 100 is restarted. If the upload is not complete, then the process 400 proceeds to block 410, wherein an error is triggered, to block 412, wherein the update process is cancelled, and to block 414, wherein the pumping of the blood pump 100 is restarted.
After the auto baud detection phase has been completed, the process 450 proceeds to the partition erase phase 454. In some embodiments, the communications in the partition erase phase 454 can include a command from the system controller 20 to erase the contents of one or several partitions, and a confirmation from the blood pump 100 when the contents of one or several partitions have been erased.
After the partition erase phase has been completed, the process 450 proceeds to the programming phase 456. In some embodiments, the update application can be transferred to the blood pump 100 during the programming phase 456 via one or several communications from the system controller 20. In some embodiments, the programming phase 456 can include the storing of the update application in the partition having erased contents.
After the programming phase has been completed, the process 450 proceeds to the verification phase 459 wherein the accuracy of the update application is verified via the generation of a datum for the update application and the comparison of the generated datum to a received datum. In some embodiments, the verification phase 458 can be initiated by a command from the system controller 20 to verify the update application and a reply from the blood pump 100 indicating the completion of the verification and/or the results of the verification.
After the verification phase has been completed, the process 450 proceeds to the finalization phase 460, wherein the stored update application is finalized. In some embodiments, this can include a re-verification of the update application by the generation of a new datum for the update application and the comparison of the generated new datum to a received datum. In some embodiments, this can further include the creation of data indicating the time of storing/loading of the update application on the blood pump 100. In some embodiments, the finalization phase can include a command from the system controller 20 to exit the software loader.
After the finalization phase has been completed, the process 450 proceeds to the failsafe and exit phase, wherein the success of the upload is evaluated. In some embodiments, if it is determined that the upload was not successful, either during the failsafe and exit phase, or during any other phase indicated in process 450, one or several failsafe measures can be run, which measures can include termination of the update process and restarting of the pumping of the blood pump 100. If it is determined that the update was successful, then the pumping of the blood pump 100 can be restarted.
In the foregoing specification, the invention is described with reference to specific embodiments thereof, but those skilled in the art will recognize that the invention is not limited thereto. Various features and aspects of the above-described invention can be used individually or jointly. Further, the invention can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. The specification and drawings are, accordingly, to be regarded as illustrative rather than restrictive. It will be recognized that the terms “comprising,” “including,” and “having,” as used herein, are specifically intended to be read as open-ended terms of art.
The present application is a continuation of U.S. patent application Ser. No. 15/704,935, filed Sep. 14, 2017, which is a continuation of U.S. patent application Ser. No. 15/451,238, filed Mar. 6, 2017, now U.S. Pat. No. 9,789,237 issued on Oct. 17, 2017 which is a divisional of U.S. patent application Ser. No. 14/687,824, filed Apr. 15, 2015, now U.S. Pat. No. 9,629,948 issued on Apr. 25, 2017, which claims the benefit of U.S. Provisional Application Ser. No. 61/979,843 filed Apr. 15, 2014, the entire contents each of which are hereby incorporated in their entirety for all purposes.
Number | Date | Country | |
---|---|---|---|
61979843 | Apr 2014 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14687824 | Apr 2015 | US |
Child | 15451238 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15704935 | Sep 2017 | US |
Child | 15918594 | US | |
Parent | 15451238 | Mar 2017 | US |
Child | 15704935 | US |