UnityPoint Health MyChart
For my senior design project, I worked with a team to create an iPhone app that works with Apple Healthkit to retrieve data from wearable devices, such as FitBit or Garmin wearables, and store that data some place that is easy for patients and their doctors to access. We wanted to collect the data from these different types of wearables, starting with just a couple different types, and store them in some form of data warehouse. From there, we wanted to be able to pull that data into the patients EMR (Electronic Medical Record), so that the healthcare professionals have quick access to the data when they need it, and have it in a format that they're already used to seeing it in. We also wanted to pull that data into our app, which will have some way for the patient to see their own data in a format that will hopefully make sense to them. This will allow them to be more conscious of their own health, so that they can make any changes to their daily routine that they deem necessary to improve their health. Once we had completed that, we hoped to perform some form of simple analysis on their health data, so we can attempt to warn them about possible health problems they may face in the future. Unfortunately, we couldn't find time to do this kind of data analysis, since it was going to be very difficult, and we needed to spend more time making sure all the other pieces of the system worked first, so we left it our of our final design. We still believe our app could be made to do that, but it would have required much more time than we were able to put into the project.
In the app, we chose to show some of the typical data that most apps for wearable devices already show, such as steps taken and heart rate. We showed this data to the user for the current day, week, and month. Since we got all of this data from Healthkit or Fitbit in similar ways, we made sure it would be simple to add new types of data to our app if we decided we wanted to later on. The user was also able to set goals for themselves in the app, and could see the progress made towards their goals. Their doctors could also set goals for them, which they could see alongside their own goals. There were talks about possibly making some sort of system where you could get discounts on your insurance if you met certain goals set by the insurance company, but since we weren't doing very much validation of data at the moment, it would be very easy to cheat the system, and would have to be something that UnityPoint Health worked out on their own. Users were also able to see how they were doing compared to other users of our app. Because we wanted to stay HIPPA compliant, we couldn't show any specific users against each other, and didn't want to have to worry about some kind of friend list function, so we chose to show our users how they were doing against everyone. We told the users that they were in the top x percent, and then gave them encouraging feedback based on their placement. We hoped that this would encourage users to improve their health, and make users more engaged in the app.
On the server side of things, we held all of the data for each day since the user started using the app. This information was used to get the weekly and monthly data for the app, and could be written into the patients EMR so that their doctor could see it. We did some slight encryption to provide some transportation security, but since this was a mock server that likely wouldn't see any real use, we didn't put too much time into it. We also chose to use Facebook login for authentication since we didn't want to try to create our own login system, but that could easily be replaced with whatever login system UnityPoint Health is using.
Most of my time on this project was spent working on acquiring health data from Fitbit and Healthkit, and making sure that data could be accessed correctly from other parts of the app. Because most of this had to be done through other API's, I spent a lot of time becoming familiar enough with the API's of Fitbit and Healthkit to be able to bring over most any type of health data we might want. I also made sure that it would be easy for anyone else who would work on the app in the future to bring in whatever health data they thought would be necessary. One issue I ran into and had to solve was that since getting everything had to be done over an internet connection, that meant I would have to deal with making sure we had all of the data before we started trying to show it to the user. To solve this problem, I had to do some work with threading in Swift, which was fortunately fairly simple.
This project should contribute to improving the health care of most people, as this will make it much easier for people to find their own health data, as well as keeping track of what they've been doing with their wearables. From there, they will be able to make changes to their life style in order to improve their health. For example, say that John has been putting on some weight over the last few weeks. With our app, John should be able to see this, and then he can change his daily routine to involve more exercise in order to keep his weight at a healthier level, before it gets too out of hand. This isn't the type of thing we would want to see our doctor about, but it is very important information for us to keep track of, and if he's using our app, he may be able to notice this trend earlier than he would be able to otherwise, keeping him healthier. Our data analysis would also have helped deal with another major problem in health care, which is that their are a lot of people storing this type of health data, but no one is really putting any of it to any good use. As an example, say that Mary's pulse has been higher than average for a few days. This isn't necessarily something you would notice in general, but could potentially be leading up to some sort of health problem. If we were able to add some data analysis to our app, we could analyze Mary's pulse and notice that it was unnaturally high, and then tell her what is happening and what she may want to do about it. Obviously we would need to be careful about this, as it could be nothing if we're too sensitive, and we don't want to send people into a panic over nothing. However, with enough data, our app could be able to tell the users about their potential health problems before they happen, which would do a great deal for improving peoples health.
We have a website that contains our design documents for this app, as well as what progress we had made. It is located here.
In the app, we chose to show some of the typical data that most apps for wearable devices already show, such as steps taken and heart rate. We showed this data to the user for the current day, week, and month. Since we got all of this data from Healthkit or Fitbit in similar ways, we made sure it would be simple to add new types of data to our app if we decided we wanted to later on. The user was also able to set goals for themselves in the app, and could see the progress made towards their goals. Their doctors could also set goals for them, which they could see alongside their own goals. There were talks about possibly making some sort of system where you could get discounts on your insurance if you met certain goals set by the insurance company, but since we weren't doing very much validation of data at the moment, it would be very easy to cheat the system, and would have to be something that UnityPoint Health worked out on their own. Users were also able to see how they were doing compared to other users of our app. Because we wanted to stay HIPPA compliant, we couldn't show any specific users against each other, and didn't want to have to worry about some kind of friend list function, so we chose to show our users how they were doing against everyone. We told the users that they were in the top x percent, and then gave them encouraging feedback based on their placement. We hoped that this would encourage users to improve their health, and make users more engaged in the app.
On the server side of things, we held all of the data for each day since the user started using the app. This information was used to get the weekly and monthly data for the app, and could be written into the patients EMR so that their doctor could see it. We did some slight encryption to provide some transportation security, but since this was a mock server that likely wouldn't see any real use, we didn't put too much time into it. We also chose to use Facebook login for authentication since we didn't want to try to create our own login system, but that could easily be replaced with whatever login system UnityPoint Health is using.
Most of my time on this project was spent working on acquiring health data from Fitbit and Healthkit, and making sure that data could be accessed correctly from other parts of the app. Because most of this had to be done through other API's, I spent a lot of time becoming familiar enough with the API's of Fitbit and Healthkit to be able to bring over most any type of health data we might want. I also made sure that it would be easy for anyone else who would work on the app in the future to bring in whatever health data they thought would be necessary. One issue I ran into and had to solve was that since getting everything had to be done over an internet connection, that meant I would have to deal with making sure we had all of the data before we started trying to show it to the user. To solve this problem, I had to do some work with threading in Swift, which was fortunately fairly simple.
This project should contribute to improving the health care of most people, as this will make it much easier for people to find their own health data, as well as keeping track of what they've been doing with their wearables. From there, they will be able to make changes to their life style in order to improve their health. For example, say that John has been putting on some weight over the last few weeks. With our app, John should be able to see this, and then he can change his daily routine to involve more exercise in order to keep his weight at a healthier level, before it gets too out of hand. This isn't the type of thing we would want to see our doctor about, but it is very important information for us to keep track of, and if he's using our app, he may be able to notice this trend earlier than he would be able to otherwise, keeping him healthier. Our data analysis would also have helped deal with another major problem in health care, which is that their are a lot of people storing this type of health data, but no one is really putting any of it to any good use. As an example, say that Mary's pulse has been higher than average for a few days. This isn't necessarily something you would notice in general, but could potentially be leading up to some sort of health problem. If we were able to add some data analysis to our app, we could analyze Mary's pulse and notice that it was unnaturally high, and then tell her what is happening and what she may want to do about it. Obviously we would need to be careful about this, as it could be nothing if we're too sensitive, and we don't want to send people into a panic over nothing. However, with enough data, our app could be able to tell the users about their potential health problems before they happen, which would do a great deal for improving peoples health.
We have a website that contains our design documents for this app, as well as what progress we had made. It is located here.