GlucoStatusFX is a JavaFX application that will sit in your menu bar and is visualizing blood glucose data coming from a nightscout server. Meaning to say you need a nightscout server setup somewhere to be able to use GlucoStatusFX.
The application is mainly done to run on MacOS, so it will also work on Linux and Windows but it will look like a MacOS application. Because the windows tray icon is not that flexible as the one on MacOS it will show the latest blood glucose value only on MacOS in the system tray. On Linux, esp. on Ubuntu there is unfortunately no support for the system tray functionality used in Java which means there is no icon at all visible. 
The application offers different features to visualize the blood glucose data.
I've created the application in the way that it is most useful for ourselves to monitor the blood glucose values of our son which suffers from diabetes type 1. 
So it might not work for you but for us it has all we need, me as a software engineer I'm sitting on the computer all the day and with that this application comes in very handy because the values are just one click away.
GlucoStatusFX will try to get the latest value once a minute but usually the values on nightscout will be updated every 5 minutes.

Main screen:

The main screens contains a bar with buttons on the top which let you select the range of hours/days that will be visualized on the chart that you see in the lower part of the application.
In the upper part of the application the current (last read) value will be shown including the trend arrow. Below this value you will find a list of the last 5 delta values. This can help you to detect a trend which might not be covered by the trend arrow.
Below that you will see the date and time of the last read value. In case the value is outdated you will recognize an exclamation mark. The text below the date time shows the currently selected range of hours/days with the average value for this range of time (e.g. 24 Hours (135))
In addition to these texts you will also find several icons in all four corners. 
But before will take a look at that let's take a look at the setup.


The button with the gear on the upper right corner of the application will bring you to the settings screen. In this screen you can define different things like the most important one, the Nightscout server url. We use the Heroku setup for our nightscout instance which is free of charge and works great. Before I had my own nightscout server running but the heroku version is far easier to setup.
In addition to the url you can define which kind of unit you would like to use, mg/dl or mmol/l.
This can be done by toggle the first switch below the nightscout url.
The next switch enables/disables the so called delta chart. This is a chart that will show the delta values of the last hour (assuming your nightscout server updates it's values every 5 minutes). 
The chart simply contains 12 boxed that either go up or down. They visualize the delta between one value and the value before that. This gives you an idea of the trend at a glance.
Then you can define for which glucose ranges you would like to get notifications and if an additional sound should be played on each notification.
You could also define how often the "Too low" and "Too high" notification should be checked.
Finally you can also define the ranges that will be used in the chart on the main screen.
It's useful to define ranges for values that are for example low but still ok like 65 mg/dl (acceptable low) or values that are higher than normal but still ok like for example 185 mg/dl (acceptable high).


The icon on the upper left corner of the main screen will open a dialog that will show you the average values of the last 30 days. First of all it just shows you a matrix of colored boxes that contain the day of the date. The color represents the average value at that specific day. So if it is green, it means the average value on that day way in the normal range. This gives you a quick overview on either how often you have been high or low, or maybe patterns e.g. if always on a Sunday you are too high.
When clicking on the box it will show the average value for 3 seconds.
On top of the dialog you will also see the HbAc1 value that was calculated from the last 30 days.


The icon on the lower left corner of the main screen will open a dialog that tries to detect a pattern from the values of the last week. It aggregates all values for each time of each day over the last week and creates a graph out of the median values. In addition it also shows an envelope curve that covers all min and max values too. The graph shows the values from 0:00 to 23:59. On top of the graph you will see a list of texts that tries to indicate a pattern e.g. "High values during lunchtime 11:10 - 11:50" 
In addition it will also show the HbAc1 value that will be calculated from the values of the last 30 days.

Time in range:

The icon on the lower right corner of the main screen will open a dialog that will show you the time in range for the currently selected range of hours/days. The ranges will be visualized by rectangles using the same colors that are also being used in the main chart (e.g. green -> target range == normal).

The icon on the upper right corner of the main screen will trigger a reload of the data from the last 30 days. 


The latest version can always be download from the github releases page.

Because the installers are not notarized you will get a warning when you try to install the program. On MacOS you can right click on the pkg file and select Open. From the Dialog that will popup you can select Open.
On Windows you need to select More Info in the dialog that will popup after you started the msi.


GlucoStatusFX started as an iOS application written in Swift using SwiftUI named GlucoTracker. It mainly is an application to visualize the blood glucose data from a nightscout server.
After I've created the iOS application I thought by myself why not also creating a desktop application which can display the last known blood glucose value in the system tray and also shows a graph of for example that last 24h.
Long story short...I've created a MacOS app using Swift and SwiftUI which has the name GlucoStatus.
I've created a separate desktop application because Mac Catalyst applications (which can run on iOS, iPadOS and MacOS) had no support for the system tray on MacOS.
After some time I was wondering if it might be possible to create a desktop application using Java and JavaFX that would give me the same experience on my Mac as the Swift application.
And with this idea GlucoStatusFX was born.

No comments:

Post a Comment