Source: http://patents.com/us-9600630.html
Timestamp: 2018-11-17 04:25:11
Document Index: 347145230

Matched Legal Cases: ['art 806', 'art 808', 'art 806', 'art 808', 'art 806', 'art 808']

US Patent # 9,600,630. User installed applications in a physiological parameter display device - Patents.com
United States Patent 9,600,630
Keegan , et al. March 21, 2017
User installed applications in a physiological parameter display device
Keegan; Christopher M. (Marcellus, NY), Lomascolo; Frank (Auburn, NY), Mudge; Miguel Christopher (Skaneateles Falls, NY)
Keegan; Christopher M.
Lomascolo; Frank
Mudge; Miguel Christopher
Family ID: 1000002472325
13/817,185
PCT/US2010/045814
WO2012/023931
US 20130311926 A1 Nov 21, 2013
Current CPC Class: G06F 19/3406 (20130101); G06F 19/3418 (20130101)
5473536 December 1995 Wimmer
6175877 January 2001 Zerber
2005/0066202 March 2005 Evans et al.
2005/0242942 November 2005 Staats et al.
2005/0251806 November 2005 Auslander et al.
2006/0149597 July 2006 Powell et al.
2006/0155589 July 2006 Lane et al.
2007/0010721 January 2007 Chen et al.
2009/0112072 April 2009 Banet et al.
2011/0138386 June 2011 Davis
10-2009-0049566 May 2009 KR
2006/136972 Dec 2006 WO
Title: iTunes, publisher: apple.com, publication date: Mar. 19, 2010, URL: http://web.archive.org/web/20100328175848/http://www.apple.com/itunes/cha- rts/paid-apps. cited by examiner .
International Search Report for corresponding International Patent Application No. PCT/US2010/045814 mailed Mar. 30, 2011. cited by applicant.
Assistant Examiner: Luu; David
1. A method comprising: receiving, by a physiological parameter display device, a signal indicative of a current value of a physiological parameter of a patient; executing, by the physiological parameter display device, an operating system that does not allow multiple-program execution; executing, by the physiological parameter display device, a single program that runs on the operating system, the program providing to a user an ability to install applications on the physiological parameter display device and an ability to run the applications on the physiological parameter display device while the physiological parameter display device continues to display data representing the current value of the physiological parameter of the patient, wherein the applications are discrete sets of functionality provided by the physiological parameter display device to the user, and wherein each application operates within the single program; causing a display unit of the physiological parameter display device to display an app selection interface, the app selection interface comprising controls that allow the user to select one of the applications to run on the physiological parameter display device; receiving an app selection input via the app selection interface, the app selection input indicating a given application; and using a thread within the program to run the given application.
3. The method of claim 1, wherein the app selection interface comprises: a parameter pane that contains the data representing the current value of the physiological parameter of the patient; and an app selection pane that contains icons associated with the applications installed on the physiological parameter display device.
4. The method of claim 1, wherein executing the program comprises causing a display unit of the physiological parameter display device to display an app installation interface that allows the user to select applications to install on the physiological parameter display device.
5. The method of claim 4, wherein executing the program comprises: receiving app installation input from the user via the app installation interface, the app installation input being a request by the user to install a given application on the physiological parameter display device; in response to receiving the app installation input, sending a request to a server for app data for the given application; receiving the app data for the given application; and storing the app data for the given application in a storage system at the physiological parameter display device.
6. The method of claim 1, wherein the applications include a given application; and wherein the method further comprises: storing app data for the given application in a storage system at the physiological parameter display device; and wherein executing the program comprises: running a container thread within the program, the container thread running the given application by processing the app data for the given application.
7. The method of claim 6, wherein the container thread comprises at least one of: a web browser, a multimedia platform, a script interpreter, and an execution environment for binary executable files.
8. The method of claim 6, wherein to run the given application, the container thread retrieves data from a server.
9. The method of claim 8, wherein executing the program further comprises running the server as a thread within the program.
10. The method of claim 6, wherein the container thread starts the thread for the given application when the container thread processes the app data for the given application.
11. The method of claim 6, wherein running the container thread comprises causing a display unit of the physiological parameter display device to display a user interface of the given application, the user interface comprising: a parameter pane that contains the data representing the current value of the physiological parameter of the patient; and an app pane, the app pane containing user interface elements specific to the given application.
12. A physiological parameter display device comprising: a display unit; a sensor interface that receives a signal from a sensor on a continuing basis, the signal indicative of a current value of a physiological parameter of a patient; a processing unit; and one or more computer storage media that store computer-executable instructions that, when executed by the processing unit, cause the physiological parameter display device to: execute an operating system that does not allow multiple-program execution; execute a single program that runs on the operating system, the program providing to a user an ability to install applications on the physiological parameter display device and an ability to run the applications on the physiological parameter display device while the physiological parameter display device continues to display data representing the current value of the physiological parameter of the patient, wherein the applications are discrete sets of functionality provided by the physiological parameter display device to the user, and wherein each application operates within the single program; display, on the display unit, an app selection interface that allows the user to select applications to install on the physiological parameter display device, the app selection interface comprising: a parameter pane that contains the data representing the current value of the physiological parameter of the patient; and an app selection pane that contains controls that allow the user to select one of the applications to run on the physiological parameter display device; and use a thread within the program to run the given application in response to receiving an app selection input via the app selection interface, the app selection input indicating the given application, the given application being one of the applications.
13. The physiological parameter display device of claim 12, wherein the one or more computer storage media store computer-executable instructions that, when executed, cause the physiological parameter display device to: send, in response to receiving app installation input from the user via the app installation interface, a request to a server for app data for a given application, wherein the app installation input indicates the given application; and store the app data for the given application upon receiving the app data for the given application from the server.
14. The physiological parameter display device of claim 13, wherein the app data for the given application includes one or more of the following: a Hypertext Markup Language (HTML) document, an Extensible Markup Language (XML) document, and a script file.
15. The physiological parameter display device of claim 13, wherein the computer-executable instructions, when executed, cause a container thread to run within the program, the container thread running the given application by processing the app data for the given application, the container thread comprising at least one of: a web browser, a multimedia platform, a script interpreter, and an execution environment for binary executable files.
16. The physiological parameter display device of claim 15, wherein the app data for the given application includes an HTML document, and the container thread processes the app data for the given application by rendering the HTML document.
17. The physiological parameter display device of claim 16, wherein the container thread causes the display unit to display an app interface for the given application, the app interface not including conventional web navigation controls.
This application is a National Stage Application of PCT/US2010/045814, filed Aug. 17, 2010, and which application is incorporated herein by reference. To the extent appropriate, a claim of priority is made to each of the above disclosed applications.
Physiological parameter display devices are used in a variety of clinical settings to help caregivers learn various physiological parameters of patients. For example, a physiological parameter display device can be used in an operating room to monitor a patient's pulse rate, blood oxygen saturation level, body temperature, and blood pressure. In another example, a physiological parameter display devices can be used to spot check physiological parameters of patients.
In many cases, physiological parameter display devices use embedded operating systems to receive, process, and display data representing the current values of such physiological parameters. Such embedded operating systems typically do not permit more than one program to execute on the physiological parameter display devices concurrently. In other words, such embedded operating systems do not allow multiple-program execution. As a result, the functionality of the physiological parameter display devices is constrained while the physiological parameter display devices are displaying data representing current values of physiological parameters of patients.
A physiological parameter display device displays data representing the current values of one or more physiological parameters of a patient. The physiological parameter display device has an operating system that only allows a single program to operate at a given time. In addition, the program provides functionality that gives a user of the physiological parameter display device an ability to add new applications to the physiological parameter display device and/or run the new applications on the physiological parameter display device while the physiological parameter display device continues to display data representing current values of the one or more physiological parameters of the patient.
FIG. 2 is a block diagram illustrating example details of a monitoring device.
FIG. 3 is a block diagram illustrating example details of a server.
FIG. 4 is a flowchart illustrating an example operation to install an app on the monitoring device.
FIG. 5 is a flowchart illustrating an example operation to run an app.
FIG. 6 is a screen illustration of an example app selection interface.
FIG. 7 is a screen illustration of an example user interface of a first app running on the monitoring device.
FIG. 8 is a screen illustration of an example user interface of a second app running on the monitoring device.
FIG. 9 is a flowchart illustrating an example operation to develop an app.
FIG. 1 is block diagram illustrating an example system 100. As illustrated in the example of FIG. 1, the system 100 comprises a patient 102, a monitoring device 104, a server 106, a network 108, and a user 110. It should be appreciated that in other embodiments, the system 100 can comprise additional people, devices, networks, and other components. For example, a different embodiment of the system 100 can comprise multiple monitoring devices and patients in communication via the network 108 with the server 106. Furthermore, the detailed description and the figures describe a monitoring device. The detailed description and figures can also be applicable to other classes of physiological parameter display devices, such as spot check devices.
The monitoring device 104 is a device that receives, on a continuing basis, signals indicative of current values of one or more physiological parameters of the patient 102. In various embodiments, the monitoring device 104 receives signals indicative of current values of various types of physiological parameters of the patient 102. For example, the physiological parameters can include a pulse rate of the patient 102, a blood pressure of the patient 102, a blood oxygen saturation level of the patient 102, a body temperature of the patient 102, a respiration rate of the patient 102, a neurological activity level of the patient 102, and other types of physiological parameters of the patient 102.
The monitoring device 104 can receive the signals from various types of sensors that are in wired or wireless communication with the monitoring device 104. For example, the monitoring device 104 can receive the signals from blood pressure cuffs, finger clips, thermometers, electrodes, and other types of sensors.
A program running on the monitoring device 104 processes the signals indicative of the current values of one or more physiological parameters and causes the monitoring device 104 to display data representative of current values of the physiological parameters. The user 110 monitors the physiological parameters of the patient 102 by reading the current values of the physiological parameters displayed by the monitoring device 104. For example, the program can process a signal indicative of the pulse rate of the patient 102 and can cause the monitoring device 104 to display current values of the pulse rate of the patient 102. In this way, the user 110 can monitor the current pulse rate of the patient 102.
The monitoring device 104 has an operating system. The operating system does not allow multiple-program execution. Multiple-program execution is a form of processing in which a processing unit works on multiple programs seemingly at the same time by parceling out the processing unit's time among the different programs. Because the operating system does not allow multiple-program execution, the operating system does not parcel out the processing unit's time among multiple programs. Effectively, the operating system only allows a single program to be running on the monitoring device 104 at any time. In other words, the operating system does not allow multiple programs to be running on the monitoring device 104 at one time.
Because the operating system only allows a single program to be running on the monitoring device 104 at any one time, the operating system can be less complex than an operating system that allows multiple programs to be running on the monitoring device at one time. However, because the operating system only allows a single program to be running on the monitoring device 104, the monitoring device 104 cannot run the program that causes the monitoring device 104 to display data representing current physiological parameters for the patient 102 while also running another program that provides some other functionality to the user 110. For example, the monitoring device 104 cannot run the program that causes the monitoring device to display parameters of the patient 102 while also running a separate program that provides a Body Mass Index (BMI) calculator.
As described in detail elsewhere in the document, a single program runs on the operating system. The program gives the user 110 an ability to install virtual applications on the monitoring device 104. In addition, the program gives the user 110 an ability to run the virtual applications on the monitoring device 104 while the monitoring device 104 continues to display data represent the current values of one or more physiological parameters of the patient 102. Because the program provides these abilities to the user 110, it can appear to the user 110 that the user 110 is able to add new applications to the monitoring device 104 and run these new applications on the monitoring device 104 while the monitoring device 104 continues to display data representing current values of one or more physiological parameters of the patient 102. The virtual applications include discrete sets of functionality provided by the monitoring device 104 to the user 110. The virtual applications are virtual in the sense that they are not separate programs operating on the monitoring device 104. For ease of explanation, such virtual applications are alternately referred to herein as "apps."
FIG. 2 is a block diagram illustrating example details of the monitoring device 104. In various embodiments, the monitoring device 104 can be a variety of different types of devices. For example, the monitoring device 104 can be a portable monitoring device, such as the Connex VSM.RTM. monitor manufactured by Welch Allyn, Inc. of Skaneateles, N.Y. In another example, the monitoring device 104 can be a wall mounted monitoring device. In yet another example, the monitoring device 104 can be a handheld monitoring device. In yet another example, the monitoring device 104 is an electrocardiograph, such as the CP 50.TM. electrocardiograph manufactured by Welch Allyn, Inc. of Skaneateles, N.Y.
As illustrated in the example of FIG. 2, the monitoring device 104 provides a program 200, an operating system 202, a communication interface 204, a storage system 206, a display unit 208, and a sensor interface 210. The communication interface 204 enables the monitoring device 104 to communicate with other devices via a network. The storage system 206 is a system of one or more computer-readable storage media that store data. The display unit 208 is a device for displaying information. The sensor interface 210 receives signals indicative of current values of physiological parameters from sensors.
The operating system 202 includes software that controls the allocation and usage of hardware resources of the monitoring device 104. Such hardware resources can include a central processing unit, memory, data storage devices, peripheral devices, and so on. The operating 202 only allows a single program to be running on the monitoring device 104 at one time. However, the operating system 202 allows multiple threads to be running within a program at one time. In some embodiments, it is not necessary for context switches to occur when multiple threads are operating concurrently.
In various embodiments, the operating system 202 can be various types of operating system. For instance, in some embodiments, the operating system 202 is a commercially available operating system, such as the ThreadX operating system manufactured by Express Logic, Inc. of San Diego, Calif.
The program 200 runs on the operating system 202. In other words, the operating system 202 starts the program 200 and manages how the program 200 uses resources of the monitoring device 104. The program 200 has multiple threads. As illustrated in the example of FIG. 2, the threads include an app manager 212, one or more app threads 214, a sensor agent 216, a file transfer module 218, a server 220, and a container 222.
The sensor agent 216 receives signals indicative of current values of one or more physiological parameters of the patient 102 from the sensor interface 210. The sensor agent 216 then processes the signals to cause the display unit 208 to display data representing current values of one or more physiological parameters of the patient 102. In addition, the sensor agent 216 can store data associated with the physiological parameters in the storage system 206.
The app manager 212 enables the user 110 to install apps on the monitoring device 104. In various embodiments, the app manager 212 enables the user 110 to install apps on the monitoring device 104 in various ways. For example, the app manager 212 can cause the display unit 208 to display an app installation interface. The app installation interface allows the user 110 to select apps to install on the monitoring device 104. In this example, the app installation interface comprises a list of available apps. In this example, the user 110 can install a given app by selecting the given app from the list of available apps.
When the app installation interface is displayed, the sensor agent 216 continues to process signals from the sensors and continues to cause the display unit 208 to display data representing the current values of the physiological parameters of the patient 102. However, the portion of the display unit 208 allocated to displaying the data representing the current values of the physiological parameters is reduced while the app installation interface is displayed. In this way, the user 110 can continue to monitor the physiological parameters of the patient 102 while the app installation interface is displayed.
When the user 110 selects an app to install, the file transfer module 218 communicates with the server 106 to retrieve app data associated with the selected app. The content of the app data differs in different embodiments and for different apps. For example, the app data for an app can comprise an icon, a set of parameters, and a script file. In another example, the app data for an app can comprise an icon, a set of parameters, and a set of Hypertext Markup Language (HTML) documents. After retrieving the app data for the selected app, the file transfer module 218 stores the app data for the selected app in the storage system 206. In some embodiments, the app data for an app can be used by computing devices other than monitoring devices to provide the functionality of the app. For example, a personal computer could use the app data for the app to provide the same functionality as when the monitoring device 104 uses the app data.
In addition, the app manager 212 enables the user 110 to start running apps that are installed on the monitoring device 104. In other words, the app manager 212 enables the user 110 to start providing the functionalities of the apps installed on the monitoring device 104. In various embodiments, the app manager 212 enables the user 110 to start running apps that are installed on the monitoring device 104 in various ways. For example, in some embodiments, the app manager 212 causes the display unit 208 to display an app selection interface. In this example, the app selection interface contains one or more controls associated with apps installed on the monitoring device 104. The user 110 can use these controls to select an app to run.
When the app selection interface is displayed, the sensor agent 216 continues to process signals from the sensors and continues to cause the display unit 208 to display data representing the current values of the physiological parameters of the patient 102. However, the portion of the display unit 208 allocated to displaying the data representing the current values of the physiological parameters is reduced while the app selection interface is displayed. In this way, the user 110 can continue to monitor the physiological parameters of the patient 102 while the app selection interface is displayed. In other embodiments, the display unit 208 does not display data representing the current values of the physiological parameters while the app selection interface is displayed.
When the user 110 selects an app to run, the app manager 212 provides an identifier of the selected app to the container 222. The container 222 is a thread that provides an environment in which the selected app runs. In various embodiments, the container 222 can be implemented in various ways. For example, the container 222 can be a web browser, such as Opera Mini or Opera Mobile. In another example, the container 222 can be multimedia platform, such as Adobe Flash.
The container 222 can run the selected app in various ways. For example, the container 222 can be a web browser and the identifier of the selected app can be a URL. In this example, the container 222 retrieves a resource, such as web page data, identified by the URL. The container 222 can retrieve the resource from various locations. For example, the container 222 can retrieve the resource from the server 220 operating at the monitoring device 104. In this example, the server 220 can retrieve the resource from the storage system 206 or dynamically generate the resource using data from the storage system 206 or another server. In another example, the container 222 can retrieve the resource from the server 106 via the network 108. In yet another example, the container 222 can retrieve the resource from a server other than the server 106 via the network 108.
When the container 222 receives the resource, the container 222 processes the resource. The container 222 processes different types of resources in different ways. For example, if the resource comprises HTML data, the container 222 renders the HTML data to present a web page on the display unit 208. In another example, if the resource comprises Adobe Flash data, the container 222 starts a Flash plug-in and provides the Flash data to the Flash plug-in.
FIG. 3 is a block diagram illustrating example details of the server 106. As illustrated in the example of FIG. 3, the server 106 provides a web server 300 and a file transfer system 302. In addition, the server 106 provides an app data repository 304. In some embodiments, the server 106 provides the web server 300 and the file transfer system 302 by executing computer-executable instructions stored on one or more computer storage media. The server 106 stores the app data repository 304 on one or more computer storage media.
The web server 300 delivers content to client devices in response to requests from the client devices. For instance, the web server 300 can deliver web pages to the monitoring device 104 in response to requests sent by the monitoring device 104. In some instances, the web server 300 can deliver content by simply retrieving the content from one or more computer storage media attached to the server 106 and transmitting the content on the network 108. However, in other instances, the web server 300 can deliver content by dynamically generating the content and transmitting the content on the network 108. In various circumstances and embodiments, the web server 300 can dynamically generate content in various ways. For example, in some embodiments, the web server 300 can interact with one or more external systems to dynamically generate content. In this example, such external systems can include a variety of different types of systems, including Hospital Information Systems, Electronic Medical Record (EMR) systems, database systems, web services systems, and other types of systems that provide data.
The web server 300 is able to receive and respond to requests for a variety of different resources. For example, the web server 300 can respond to requests for web pages, Adobe Flash data, audio/video streams, available app lists, and so on. As discussed elsewhere in this specification, an available app list is a set of data that lists apps that are available to be installed on a monitoring device.
Furthermore, the web server 300 can receive requests for app data. When the web server 300 receives a request for app data for a particular app from a monitoring device, the web server 300 instructs the file transfer system 302 to send the app data to the monitoring device. In response, the file transfer system 302 retrieves the app data from the app data repository 304 and transmits the app data to the monitoring device. In various embodiments, the file transfer system 302 transmits the app data to the monitoring device in various ways. For example, the file transfer system 302 can transmit the app data to the monitoring device using HTTP, secure HTTP, the File Transfer Protocol (FTP), or another publicly-available communications protocol. In another example, the file transfer system 302 can transmit the app data to the monitoring device using a proprietary communications protocol, such as the Welch Allyn Communications Protocol (WACP).
FIG. 4 is a flowchart illustrating an example operation 400 to install an app on the monitoring device 104. As illustrated in the example of FIG. 4, the operation 400 begins when the app manager 212 receives an available app list from the server 106 (402). The available app list comprises data that lists apps that are available to be installed on the monitoring device 104. The available app list can contain various details about the apps. For example, the available app list can contain names of apps, textual or graphical descriptions of apps, size requirements of apps, user comments or ratings regarding apps, and/or other types of details about the apps. After receiving the available app list, the app manager 212 stores the available app list in the storage system 206 (404).
Subsequently, the program 200 receives a request from the user 110 to open an app installation interface (406). In response, the app manager 212 causes the display unit 208 to display the app installation interface (408). The app installation interface contains information regarding at least some of the apps listed in the available app list. In some embodiments, the app manager 212 can provide search tools that allow the user 110 to provide search criteria to the app manager 212. In this example, the app installation interface lists available apps that are responsive to the search criteria provided by the user 110. When the app installation interface is displayed, the monitoring device 104 continues to display current data representing the current values of the physiological parameters of the patient 102.
Next, the app manager 212 receives app installation input from the user 110 via the app installation interface (410). The app installation input is a request by the user 110 to install an app on the monitoring device 104. The app manager 212 receives the app installation input when the user 110 selects the app from the list of available apps displayed in the app installation interface.
In response to receiving the app installation input from the user 110, the app manager 212 sends a request to the server 106 for app data for the selected app (412). Subsequently, the app manager 212 receives the app data for the selected app (414). After receiving the app data for the selected app, the app manager 212 stores the app files for the selected app in the storage system 206 (416). In some embodiments, the user 110 may need to agree to a license before receiving the app data or before running the selected app. The license may be from a developer of the selected app and/or from a distributor of the selected app (i.e., an entity operating the server 106).
FIG. 5 is a flowchart illustrating an example operation 500 to run an app. As illustrated in the example of FIG. 5, the operation 500 begins when the program 200 receives a request from the user 110 to display an app selection interface (502). In response to the request to display the app selection interface, the app manager 212 causes the display unit 208 to display the app selection interface (504). The app selection interface comprises controls associated with apps installed on the monitoring device 104. In various embodiments, the controls in the app selection interface can have various forms. For example, the controls in the app selection interface can comprise selectable icons. In this example, the downloaded app data for the installed apps include the icons. The app manager 212 retrieves the icons from the storage system 206 when the app manager 212 generates the app selection interface. In another example, the controls in the app selection interface can comprise selectable icons with textual titles. In yet another example, the controls in the app selection interface can comprise textual descriptions of installed apps with associated radio button controls.
FIG. 6 is a screen illustration of an example app selection interface 600. The app selection interface 600 is a user interface displayed by the display unit 208 of the monitoring device 104. As illustrated in the example of FIG. 6, the app selection interface 600 comprises a parameter pane 602. The parameter pane 602 contains data representing current values of physiological parameters of the patient 102. In the example of FIG. 6, the parameter pane 602 includes data representing the current values of the systolic and diastolic blood pressures of the patient 102, the blood oxygen saturation of the patient 102, the pulse rate of the patient 102, and the body temperature of the patient 102.
In addition to the parameter pane 602, the app selection interface 600 comprises an app selection pane 604. The app selection pane 604 contains icons 606 associated with apps installed on the monitoring device 104. The app selection pane 604 also includes a scroll bar 608. When the app selection pane 604 does not have enough space to show the icons associated with all of the apps installed on the monitoring device 104, the user 110 can use the scroll bar 608 to cause the app selection pane 604 to reveal icons associated with additional apps. In the example of FIG. 6, the user 110 can provide app selection input to the app manager 212 by touching one of the icons 606.
Reference is now made again to FIG. 5. When the app selection interface is displayed, the app manager 212 receives an app selection input from the user 110 via the app selection interface (506). The app selection input indicates one of the installed apps. In various embodiments, the app manager 212 receives the app selection input in various ways. For example, in embodiments where the app selection interface comprises selectable icons associated with installed apps, the app manager 212 can receive the app selection input when the user 110 selects one of the icons. In another example, in embodiments where the app selection interface comprises radio button controls associated with installed apps, the app manager 212 receives the app selection input when the user 110 selects one of the radio button controls and then selects a submit button.
In response to receiving the app selection input, the app manager 212 provides an identifier of the selected app to the container 222 (508). In various embodiments, the app manager 212 provides the identifier of the selected app to the container 222 in various ways. For example, in some embodiments, the container 222 can be a web browser and the identifier of the selected app can be a URL. In this example, the app manager 212 provides the URL to the web browser.
After the app manager 212 provides the identifier of the selected app to the container 222, the container 222 runs the selected app (510). When the container 222 runs the selected app, the container 222 causes the display unit 208 to display an app interface. The app interface contains text, images, video, or other information belonging to one or more apps. In some embodiments in which the container 222 is a web browser, the app interface does not include conventional web navigation controls, such as a back button, a forward button, a home button, a reload button, an address bar, and so on. Consequently, it may appear to the user that the monitoring device 104 is running the selected app natively. Because the user 110 is not provided with any indication that the selected app is running through a web browser, it may appear to the user 110 like the selected app is actually running as a separate application on the monitoring device 104.
Furthermore, when the app interface is displayed, the monitoring device 104 continues to display current data representing the physiological parameters of the patient 102. The monitoring device 104 is able to continue displaying current parameter data of the patient 102 because the sensor agent 216 and the container 222 execute as separate threads. In other embodiments, the display unit 208 does not display data representing the current values of the physiological parameters while the app interface is displayed.
The container 222 runs various types of apps in various ways. For example, the container 222 can be a web browser and the selected app can comprise a set of web pages. In this example, the container 222 runs the selected app by requesting the HTML documents from a server, such as the server 220 or the web server 300. In this example, the HTML documents can be static or dynamically-generated web pages. Upon receiving the HTML documents, the container 222 renders the HTML documents in the app interface. Furthermore, in this example, the HTML documents can contain embedded scripts, such as JavaScript scripts or VBScript scripts. The container 222 can process these embedded scripts as part of rendering the web pages and/or after the container 222 renders such web pages.
In another example, the container 222 runs the selected app by requesting Extensible Markup Language (XML) documents from a server, such as the server 220 or the web server 300. The container 222 processes the XML documents to cause the app interface to contain various elements.
In yet another example, the container 222 is a Flash player. In this example, the container 222 runs the selected app by retrieving a Flash file from a server, such as the server 220 or the web server 300. The container 222 then processes the Flash file to display various elements in the app interface.
In yet another example, the container 222 is a script interpreter. In this example, the container 222 runs the selected app by requesting one or more scripts from a server, such as the server 220 or the web server 300, or by requesting one or more scripts from the storage system 206. Upon receiving the one or more scripts, the container 222 interprets the scripts and performs the commands indicated by the scripts. As part performing the commands indicated by the scripts, the container 222 can initialize and start one or more of the app threads 214. The app threads 214 operate within the program 200. The app threads 214 can provide various functionalities. For example, one of the app threads 214 can process a physiological parameter of the patient and update a chart on an ongoing basis.
In yet another example, the container 222 is an execution environment for binary executable files. For instance, the app data can include compiled Java file and the container 222 can be a Java Virtual Machine. In another instance, the app data can include one or more compiled .NET assemblies and the container 222 can be a Common Language Runtime.
FIG. 7 is a screen illustration of an example user interface 700 of a first app running on the monitoring device 104. The user interface 700 is a user interface displayed by the display unit 208 of the monitoring device 104. In some embodiments, the monitoring device 104 displays the user interface 700 when the user 110 selects one of the icons 606 from the app selection interface 600.
As illustrated in the example of FIG. 7, the user interface 700 comprises a parameter pane 702. The parameter pane 702 contains data representing current values of physiological parameters of the patient 102. In the example of FIG. 7, the parameter pane 702 includes data representing the current values of systolic and diastolic blood pressures of the patient 102, the blood oxygen saturation of the patient 102, the pulse rate of the patient 102, and the body temperature of the patient 102.
In addition to the parameter pane 702, the user interface 700 contains an app pane 704. The app pane 704 contains user interface elements that are specific to an app. The app pane 704 contains a weight control 706 and a height control 708. The weight control 706 and the height control 708 allow the user 110 to enter a weight and a height. The app pane 704 also includes numeric keypad controls 710 that allow the user 110 to enter numbers into the weight control 706 and the height control 708. The app pane 704 also includes a calculate control 712. When the user 110 has entered numbers into the weight control 706 and the height control 708 and the user 110 selects the calculate control 712, a body mass index (BMI) is displayed in a BMI control 714 in the app pane 704.
FIG. 8 is a screen illustration of a user interface 800 of a second app running on the monitoring device 104. The user interface 800 is a user interface displayed by the display unit 208 of the monitoring device 104. In some embodiments, the monitoring device 104 displays the user interface 800 when the user 110 selects one of the icons 606 from the app selection interface 600.
As illustrated in the example of FIG. 8, the user interface 800 comprises a parameter pane 802. The parameter pane 802 contains data representing current values of physiological parameters of the patient 102. In the example of FIG. 8, the parameter pane 802 contains data representing current the current values of systolic and diastolic blood pressures of the patient 102, the blood oxygen saturation of the patient 102, the pulse rate of the patient 102, and the body temperature of the patient 102.
In addition to the parameter pane 802, the user interface 800 contains an app pane 804. The app pane 804 contains user interface elements that are specific to an app. The app pane 804 comprises a pulse rate chart 806 and a blood oxygen saturation chart 808. The pulse rate chart 806 shows readings of the pulse rate of the patient 102 over time. The blood oxygen saturation chart 808 shows readings of the blood oxygen saturation of the patient 102 over time. The second app can dynamically generate the pulse rate chart 806 and the blood oxygen saturation chart 808 using data generated by sensors attached to the monitoring device 104, data retrieved from the server 220, data retrieved from the web server 300, and/or using data retrieved from another source.
FIG. 9 is a flowchart illustrating an example operation 900 to develop an app that can run on the monitoring device 104. As illustrated in the example of FIG. 9, a developer can first develop the app in a development environment (902). The development environment is a set of one or more computers used by the developer to develop apps. Monitoring devices used by the end users cannot retrieve app data from the development environment.
After initially developing the app, the developer runs the app using the development environment (904). Running the app using the development environment provides the developer with an opportunity to determine whether the app is functioning correctly. After running the app using the development environment, the developer debugs the app using the development environment (906). Debugging the app can include editing software code, modifying HTML or XML files, editing graphics or other media, and other tasks to ensure the app provides the correct functionality. The developer can iterate through the process of running the app and debugging the app in the development environment multiple times.
When the developer is satisfied with the functionality and appearance of the app, the developer submits the app for approval by an app distributor (908). The app distributor is an entity that is responsible for controlling which apps are available to be installed on monitoring devices. In various embodiments, the app distributor can be various types of entities. For example, the app distributor can be an enterprise that manufactures monitoring devices. In another example, the app distributor can be an entity that operates the server 106.
Upon receiving the app from the developer, the app distributor conducts an approval process to determine whether the app should be allowed to be installed on monitoring devices. If the app distributor approves the app, the app becomes available for installation on monitoring devices, such as the monitoring device 104. If the app distributor rejects the app, the app distributor notifies the developer and can inform the developer why the app distributor did not approve the app. The app distributor can reject the app for a variety of reasons. For example, the app distributor can reject the app if the app does not function properly, poses a security risk, contains inappropriate content, or if the app does not meet various other criteria.
FIG. 10 is a block diagram illustrating an example computing device 1000. In some embodiments, the monitoring device 104 and/or the server 106 are implemented using one or more computing devices like the computing device 1000. It should be appreciated that in other embodiments, the monitoring device 104 and/or the server 106 are implemented using computing devices having hardware components other than those illustrated in the example of FIG. 10.
In different embodiments, computing devices are implemented in different ways. For instance, in the example of FIG. 10, the computing device 1000 comprises a memory 1002, a processing system 1004, a secondary storage device 1006, a network interface card 1008, a video interface 1010, a display unit 1012, an external component interface 1014, and a communication medium 1016. In other embodiments, computing devices are implemented using more or fewer hardware components. For instance, in another example embodiment, a computing device does not include a video interface, a display unit, an external storage device, or an input device.
The term computer readable media as used herein may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. The memory 1002 includes one or more computer storage media capable of storing data and/or instructions. As used in this document, a computer storage medium is a device or article of manufacture that stores data and/or software instructions readable by a computing device. In different embodiments, the memory 1002 is implemented in different ways. For instance, in various embodiments, the memory 1002 is implemented using various types of computer storage media. Example types of computer storage media include, but are not limited to, dynamic random access memory (DRAM), double data rate synchronous dynamic random access memory (DDR SDRAM), reduced latency DRAM, DDR2 SDRAM, DDR3 SDRAM, Rambus RAM, solid state memory, flash memory, read-only memory (ROM), electrically-erasable programmable ROM, and other types of devices and/or articles of manufacture that store data.
The processing system 1004 includes one or more physical integrated circuits that selectively execute software instructions. In various embodiments, the processing system 1004 is implemented in various ways. For example, the processing system 1004 can be implemented as one or more processing cores. In this example, the processing system 1004 can comprise one or more Intel Core 2 microprocessors. In another example, the processing system 1004 can comprise one or more separate microprocessors. In yet another example embodiment, the processing system 1004 can comprise an ASIC that provides specific functionality. In yet another example, the processing system 1004 provides specific functionality by using an ASIC and by executing software instructions. In another example, the processing system 1004 is an ARM7 processor. In different embodiments, the processing system 1004 executes software instructions in different instruction sets. For example, the processing system 1004 executes software instructions in instruction sets such as the x86 instruction set, the POWER instruction set, a RISC instruction set, the SPARC instruction set, the IA-64 instruction set, the MIPS instruction set, and/or other instruction sets.
The secondary storage device 1006 includes one or more computer storage media. The secondary storage device 1006 stores data and software instructions not directly accessible by the processing system 1004. In other words, the processing system 1004 performs an I/O operation to retrieve data and/or software instructions from the secondary storage device 1006. In various embodiments, the secondary storage device 1006 is implemented by various types of computer-readable data storage media. For instance, the secondary storage device 1006 may be implemented by one or more magnetic disks, magnetic tape drives, CD-ROM discs, DVD-ROM discs, Blu-Ray discs, solid state memory devices, Bernoulli cartridges, and/or other types of computer-readable data storage media.
The network interface card 1008 enables the computing device 1000 to send data to and receive data from a communication network. In different embodiments, the network interface card 1008 is implemented in different ways. For example, in various embodiments, the network interface card 1008 is implemented as an Ethernet interface, a token-ring network interface, a fiber optic network interface, a wireless network interface (e.g., WiFi, WiMax, etc.), or another type of network interface.
The video interface 1010 enables the computing device 1000 to output video information to the display unit 1012. In different embodiments, the video interface 1010 is implemented in different ways. For instance, in one example embodiment, the video interface 1010 is integrated into a motherboard of the computing device 1000. In another example embodiment, the video interface 1010 is a video expansion card. In various embodiments, the display unit 1012 can be a cathode-ray tube display, an LCD display panel, a plasma screen display panel, a touch-sensitive display panel, an LED screen, a projector, or another type of display unit. In various embodiments, the video interface 1010 communicates with the display unit 1012 in various ways. For example, the video interface 1010 can communicate with the display unit 1012 via a Universal Serial Bus (USB) connector, a VGA connector, a digital visual interface (DVI) connector, an S-Video connector, a High-Definition Multimedia Interface (HDMI) interface, a DisplayPort connector, or another type of connection.
The external component interface 1014 enables the computing device 1000 to communicate with external devices. In various embodiments, the external component interface 1014 is implemented in different ways. For example, the external component interface 1014 can be a USB interface, a FireWire interface, a serial port interface, a parallel port interface, a PS/2 interface, and/or another type of interface that enables the computing device 1000 to communicate with external devices. In different embodiments, the external component interface 1014 enables the computing device 1000 to communicate with different external components. For example, the external component interface 1014 can enable the computing device 1000 to communicate with external storage devices, input devices, speakers, phone charging jacks, modems, media player docks, other computing devices, scanners, digital cameras, a fingerprint reader, and other devices that can be connected to the computing device 1000. Example types of external storage devices include, but are not limited to, magnetic tape drives, flash memory modules, magnetic disk drives, optical disc drives, flash memory units, zip disk drives, optical jukeboxes, and other types of devices comprising one or more computer storage media. Example types of input devices include, but are not limited to, keyboards, mice, trackballs, stylus input devices, key pads, microphones, joysticks, touch-sensitive display screens, and other types of devices that provide user input to the computing device 1000.
The communications medium 1016 facilitates communication among the hardware components of the computing device 1000. In different embodiments, the communications medium 1016 facilitates communication among different components of the computing device 1000. For instance, in the example of FIG. 10, the communications medium 1016 facilitates communication among the memory 1002, the processing system 1004, the secondary storage device 1006, the network interface card 1008, the video interface 1010, and the external component interface 1014. In different implementations of the computing device 1000, the communications medium 1016 is implemented in different ways. For instance, in different implementations of the computing device 1000, the communications medium 1016 may be implemented as a PCI bus, a PCI Express bus, an accelerated graphics port (AGP) bus, an Infiniband interconnect, a serial Advanced Technology Attachment (ATA) interconnect, a parallel ATA interconnect, a Fiber Channel interconnect, a USB bus, a Small Computing system Interface (SCSI) interface, or another type of communications medium.
The memory 1002 stores various types of data and/or software instructions. For instance, in the example of FIG. 10, the memory 1002 stores a Basic Input/Output System (BIOS) 1024, and an operating system 1026. The BIOS 1024 includes a set of software instructions that, when executed by the processing system 1004, cause the computing device 1000 to boot up. The operating system 1026 includes a set of software instructions that, when executed by the processing system 1004, cause the computing device 1000 to provide an operating system that coordinates the activities and sharing of resources of the computing device 1000.
Previous Patent US 9,600,629 | Next Patent US 9,600,631