As my mother's health has deteriorated, it became more and more important to capture information about her vitals. While most people are content to wait to learn their blood pressure, heart rate, blood oxygen levels, and other vitals when they visit their doctor's office, in order to care for mom effectively, I want to know these measurements more often. Treating her diabetes means managing her blood sugar levels; such is a daily, sometimes hourly, task.
I want a system that makes it easy to record her vitals and analyze this data. Now, it's true, I can easily use pen & paper. Pen and paper is essentially what I've been using, a whiteboard with dry erase markers that I capture numbers as I collect them. This has all the usual obvious problems: what happens if an entry gets erased accidentally? What if my handwriting is bad? What if I run out of space? How do I share it simply with her doctors? How can I see the underlying trends in the data?
I could easily use a spreadsheet. That's suggested to be the "lowest effort" electronic solution. It solves digital durability, clarity, is conceptually more difficult to run out of space and easier to share.
But it still involves tedious, manual work. I have to take readings, copy them down into a spreadsheet. If I want to make a graph, I have to learn Excel's charting tools. I could do fancy manipulations with Pivot Tables, etc...
But what I really want is a way for all of this to be done for me. I don't want to have to take her blood pressure using a blood pressure cuff, read and copy down the numbers, and then send them to a physician later. In my ideal world, the cuff is integrated with my data store. When I do a reading, it persists its measurement to a log. That log is automatically shared with family and trusted contacts like doctors. The log has machine learning applied to find patterns and surface correlations/offer tentative causality hypotheses. The auto-collection of data prevents me from making silly mistakes and can integrate with other systems that take actions based on the readings. I want to be able to visualize her readings for weight and blood pressure over a week, a month, a year. I want to be able to correlate specific events, like hospitalization or illness, with changes in median levels. Speaking of medians, I want to be able to simply calculate summary statistics.
From information, we can achieve freedom. So let's build a system that makes it simple to gather this information and easy to use it to improve someone's health.
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13338 AddWeight
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13339 ListWeights
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13340 AddBodyMassIndex
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13341 ListBodyMassIndices
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13342 AddBodyFatPercentage
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13343 ListBodyFatPercentages
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13344 AddBodyWaterPercentage
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13345 ListBodyWaterPercentages
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13346 AddBloodSugar
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13347 ListBloodSugars
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13348 AddBloodPressure
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13349 ListBloodPressures
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13350 AddBodyTemperature
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13351 ListBodyTemperatures
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13352 AddBloodOxygen
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13353 ListBloodOxygens
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13354 AddPulse
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.iluvatar.Iluvatar 13355 ListPulses
This project uses software.visionary.iluvatar.Iluvatar
as a plugin-based lightweight Socket listener. Each Vital's actions
are implemented as a micro-service, which can start as an independent process and accept connections. The full list of
services and their associated ports are documented in the software.visionary.vitalizr.Client
, which shows the basic
communication model and protocol.
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.vitalizr.Client "List" "Weight" "7ab35698-21f9-463e-8e74-bd3d56109336"
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.vitalizr.Client "Add" "Fat" "7ab35698-21f9-463e-8e74-bd3d56109336" "28.5"
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.vitalizr.Client "List" "Fat" "7ab35698-21f9-463e-8e74-bd3d56109336"
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.vitalizr.Client "Add" "BMI" "7ab35698-21f9-463e-8e74-bd3d56109336" "31.8"
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.vitalizr.Client "List" "Water" "7ab35698-21f9-463e-8e74-bd3d56109336"
The client also supports adding a new Person who hasn't previously been stored.
- Generate a UUID externally first for them.(TODO, encapsulate this) For instance, in Ubuntu you can use
uuidgen
- Send a request with the id and their info, like:
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar software.visionary.vitalizr.Client "Add" "Sugar" "mom:1959-1-9:[email protected]" "91"
To debug/poke around, git clone the repo, run one of the microservices, and attach a debugger like so:
java -cp build/libs/vitalizr-0.0.1-SNAPSHOT.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000 software.visionary.iluvatar.Iluvatar 13338 AddWeight
Contact nick at visionary.software
.
Vitalizr is a loving creation of my own mind that to solve some of my family's problems, that may help yours. It is licensed under LGPLv3 because
I'm a frim believer in Free Software and a Free And Open Internet/Society.
Vitalizr is provided with an "AS-IS" Warranty, you break it, you bought it. I do not condone any capitalists trying to incorporate it into their work to rip off the masses. I will, however, accept donations that will enable me to do other useful things, if you'd be inclined to Flattr me: flattr.com/@visionary
If you would like to commission me to realize one of your visions, I am open to independent project contracts.