Giter Site home page Giter Site logo

health's Introduction

Nextcloud Health

Track your health privately.

Track your health data within the following provided modules:

  • Weight
  • Feeling
  • Measurement
  • Sleep
  • Smoking
  • Activities
  • Medication

Health - Track your personal health data privately.

Issues

Security

If you found a security related issue, please don't create an issue on github. But please write me an mail at [email protected]. That way we can take this into account without telling an attacker where to look for.

Bugs

You found a bug? Great, please create here an issue for it: https://github.com/nextcloud/health/issues/new?assignees=&labels=bug%2C0.+Needs+triage&projects=&template=bug-report.yml If you don't have a Github account feeld free to send me an mail to [email protected].

Feature requests

Feels free to create issues for feature requests. But first have a look if there is already a issue for it by searching for this. Second, this is a more or less free time project. So don't expect that we will implement this by time or at all. https://github.com/nextcloud/health/issues/new?assignees=&labels=enhancement%2C0.+Needs+triage&projects=&template=feature-request.yml

Installation/Update

The app can be installed through the app store within Nextcloud. You can also download the latest release from the release page.

Developing

You will need a Nextcloud server running, the individual options are described below.

General build instructions

General build instructions for the app itself are the same for all options.

To build you will need to have Node.js and Composer installed.

  • Install PHP dependencies: composer install --no-dev
  • Install JS dependencies: npm ci
  • Build JavaScript for the frontend
    • Development build npm run dev
    • Watch for changes npm run watch
    • Production build npm run build

GitHub Codespaces / VS Code devcontainer

  • Open code spaces or the repository in VS Code to start the dev container
  • The container will automatically install all dependencies and build the app
  • Nextcloud will be installed from the master development branch and be available on a port exposed by the container

Running tests

You can use the provided Makefile to run all tests by using:

make test

Documentation

The documentation for our REST API can be found at https://github.com/nextcloud/health/wiki/API

Contribution Guidelines

Please read the Code of Conduct. This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.

For more information please review the guidelines for contributing to this repository.

Apply a license

All contributions to this repository are considered to be licensed under the GNU AGPLv3 or any later version.

Contributors to the Deck app retain their copyright. Therefore we recommend to add following line to the header of a file, if you changed it substantially:

@copyright Copyright (c) <year>, <your name> (<your email address>)

For further information on how to add or update the license header correctly please have a look at our licensing HowTo.

Sign your work

We use the Developer Certificate of Origin (DCO) as a additional safeguard for the Nextcloud project. This is a well established and widely used mechanism to assure contributors have confirmed their right to license their contribution under the project's license. Please read developer-certificate-of-origin. If you can certify it, then just add a line to every git commit message:

  Signed-off-by: Random J Developer <[email protected]>

Use your real name (sorry, no pseudonyms or anonymous contributions). If you set your user.name and user.email git configs, you can sign your commit automatically with git commit -s. You can also use git aliases like git config --global alias.ci 'commit -s'. Now you can commit with git ci and the commit will be signed.

health's People

Contributors

berlin2123 avatar christianlupus avatar cyroxx avatar datenangebot avatar davidoe avatar dependabot[bot] avatar je-ff avatar jmb avatar kenda avatar luke-beck avatar morrisjobke avatar nextcloud-bot avatar rakekniven avatar tarator avatar valdnet avatar vitormattos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

health's Issues

Issue at creating a new person

Hi,

New app sounds very interesting and wanted to try it out. At creating a new person I run into the following error.

Doctrine\DBAL\Exception\NotNullConstraintViolationException: An exception occurred while executing 'INSERT INTO "oc_health_persons" ("insert_time", "lastupdate_time", "user_id", "name", "enabled_module_weight", "enabled_module_breaks", "enabled_module_feeling", "enabled_module_medicin", "enabled_module_activities", "weight_unit") VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["2020-10-24 08:23:44", "2020-10-24 08:23:44", "my_name", "first person", true, false, false, false, false, "kg"]: SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column "age" violates not-null constraint DETAIL: Failing row contains (11, my_name, 2020-10-24 08:23:44, 2020-10-24 08:23:44, first person, null, null, t, f, f, f, f, null, null, null, kg, null, null, null, ).

Am using the version 0.1.1 on NC 19.0.4.

Can you please have a look?

Thanks a lot!

Weight module shows wrong date in table

I noticed since the 0.3.0 update, Weight is showing the previous day's date in the table, but not in the chart or when editing a date in the table or adding a new one.

For example, if I add an entry for the date shows 31/01/2021, and when I save it the chart shows new item as Jan. 31 but the table shows 30/01/2021. If I edit it, it's back to 31/01/2021.

Cant create Person

I cant create a new person. Steps to reproduce:

  1. Open the app
  2. Click 'New Person'
  3. Enter Name + Submit

The input field vanishes and nothing happens. From the logs i get the following error:

{
    "reqId": "X5X2wHljA@8iFS1wF76tawAAAA0",
    "level": 3,
    "time": "2020-10-25T23:05:53+01:00",
    "remoteAddr": "77.182.197.172",
    "user": "***",
    "app": "index",
    "method": "GET",
    "url": "/apps/health/persons",
    "message": {
        "Exception": "OCP\\AppFramework\\QueryException",
        "Message": "Could not resolve OCA\\Health\\Controller\\PersonsController! Class OCA\\Health\\Services\\PersonsService does not exist",
        "Code": 0,
        "Trace": [{
                "file": "/www/htdocs/***/webroot/lib/private/AppFramework/Utility/SimpleContainer.php",
                "line": 116,
                "function": "resolve",
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "type": "->",
                "args": ["OCA\\Health\\Controller\\PersonsController"]
            }, {
                "file": "/www/htdocs/***/webroot/lib/private/AppFramework/DependencyInjection/DIContainer.php",
                "line": 414,
                "function": "query",
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "type": "->",
                "args": ["OCA\\Health\\Controller\\PersonsController"]
            }, {
                "file": "/www/htdocs/***/webroot/lib/private/AppFramework/DependencyInjection/DIContainer.php",
                "line": 385,
                "function": "queryNoFallback",
                "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
                "type": "->",
                "args": ["OCA\\Health\\Controller\\PersonsController"]
            }, {
                "file": "/www/htdocs/***/webroot/lib/private/AppFramework/App.php",
                "line": 124,
                "function": "query",
                "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
                "type": "->",
                "args": ["OCA\\Health\\Controller\\PersonsController"]
            }, {
                "file": "/www/htdocs/***/webroot/lib/private/AppFramework/Routing/RouteActionHandler.php",
                "line": 47,
                "function": "main",
                "class": "OC\\AppFramework\\App",
                "type": "::",
                "args": ["OCA\\Health\\Controller\\PersonsController", "index", {
                        "__class__": "OC\\AppFramework\\DependencyInjection\\DIContainer"
                    }, {
                        "_route": "health.persons.index"
                    }
                ]
            }, {
                "function": "__invoke",
                "class": "OC\\AppFramework\\Routing\\RouteActionHandler",
                "type": "->",
                "args": [{
                        "_route": "health.persons.index"
                    }
                ]
            }, {
                "file": "/www/htdocs/***/webroot/lib/private/Route/Router.php",
                "line": 297,
                "function": "call_user_func",
                "args": [{
                        "__class__": "OC\\AppFramework\\Routing\\RouteActionHandler"
                    }, {
                        "_route": "health.persons.index"
                    }
                ]
            }, {
                "file": "/www/htdocs/***/webroot/lib/base.php",
                "line": 1011,
                "function": "match",
                "class": "OC\\Route\\Router",
                "type": "->",
                "args": ["/apps/health/persons"]
            }, {
                "file": "/www/htdocs/***/webroot/index.php",
                "line": 37,
                "function": "handleRequest",
                "class": "OC",
                "type": "::",
                "args": []
            }
        ],
        "File": "/www/htdocs/***/webroot/lib/private/AppFramework/Utility/SimpleContainer.php",
        "Line": 107,
        "CustomMessage": "--"
    },
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
    "version": "19.0.4.2",
    "id": "5f95f6ec86c1f"
}

I tried to install the app manually because of #11 i removed the app and then installed it again from the repository. Im not sure if this could be related to the error.

Feature request: Register Hypoglycemia and symptoms (Diabetes)

I suggest Health gets a way to register hypoglycemia, also known as low blood sugar, and it's most common symptoms. Not to be confused with a low blood sugar measurement in mg/dL or mmol/L.

https://en.wikipedia.org/wiki/Hypoglycemia
https://www.mayoclinic.org/diseases-conditions/hypoglycemia/symptoms-causes/syc-20373685

Suggestion - Adding the option to the "Feeling"-module

Some of the symptoms we're able to register are already relevant to hypoglycemia, i.e. fatigue and anxiety. By adding a few more, the most common symptoms of hypoglycemia is covered. Some of the addition would be relevant for other conditions as well.

Additions to Symptoms:

Irregular heartbeat
Pale skin
Shakiness
Sweating (Cold sweat without activity)
Hunger
Tingling or numbness

Additions to Attacks:

Hypoglycemia

Weird icon-behavior when changing persons name

When changing the name of a person the text-input has some weird optical effects (see screenshot)

image

(I changed my name for Xxxxx Xxxxxx)

Apart from the weird optics it seems to work well.

Default Chart view

Every time when i add (manually) weight, body fat... the chart view is setted to last "last month" and are viewed all values - this is not confortable to view. Every time need to close all values and to open by one to analyse the values. For me is normal to see by default the weight for the last year and after i will close the weight and open another value.
The answer: Is possible to make an option in menu to set what to see by default in chart?
THX.

FR: NC21 compatibility

Following error occurs while enable the app in NC21:

/var/www/html $ ./occ app:enable health
An unhandled exception has been thrown:
Error: Undefined class constant 'TEXT' in /var/www/html/custom_apps/health/lib/Migration/Version0140Date20201117200000.php:57
Stack trace:
#0 /var/www/html/custom_apps/health/lib/Migration/Version0140Date20201117200000.php(44): OCA\Health\Migration\Version0140Date20201117200000->createCES(Object(OC\DB\SchemaWrapper))
#1 /var/www/html/lib/private/DB/MigrationService.php(455): OCA\Health\Migration\Version0140Date20201117200000->changeSchema(Object(OC\Migration\SimpleOutput), Object(Closure), Array)
#2 /var/www/html/lib/private/DB/MigrationService.php(418): OC\DB\MigrationService->migrateSchemaOnly('latest')
#3 /var/www/html/lib/private/Installer.php(163): OC\DB\MigrationService->migrate('latest', true)
#4 /var/www/html/core/Command/App/Enable.php(123): OC\Installer->installApp('health', false)
#5 /var/www/html/core/Command/App/Enable.php(93): OC\Core\Command\App\Enable->enableApp('health', Array, false, Object(Symfony\Component\Console\Output\ConsoleOutput))
#6 /var/www/html/custom_apps/bookmarks/vendor/symfony/console/Command/Command.php(255): OC\Core\Command\App\Enable->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#7 /var/www/html/custom_apps/bookmarks/vendor/symfony/console/Application.php(1009): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#8 /var/www/html/custom_apps/bookmarks/vendor/symfony/console/Application.php(273): Symfony\Component\Console\Application->doRunCommand(Object(OC\Core\Command\App\Enable), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 /var/www/html/custom_apps/bookmarks/vendor/symfony/console/Application.php(149): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 /var/www/html/lib/private/Console/Application.php(215): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 /var/www/html/console.php(100): OC\Console\Application->run()
#12 /var/www/html/occ(11): require_once('/var/www/html/c...')
/var/www/html $ ./occ status
  - installed: true
  - version: 21.0.0.18
  - versionstring: 21.0.0
  - edition:

Feature Request: Add Support for Fitbit-API Integration

Even with a basic fitbit user-account you can make use of the REST-API of fitbit for free. It would be nice to automatically synchronize the data from a fitbit-account to this health app. This would be possible on-demand (GET/POST) requests, but also by subscription. However for the subscription, you need to set up some web-hook-url. And I don't know nextclouds app-environment as much as I could say if it's possible for one app to provide such a url...

So finally, I am not sure if it's technically easier to fetch health/tracker data manually or by getting notified via subscription. But that would be your design decision. In any way, I would love to have the possibility to collect my tracker-data in my nextcloud-health-app.

Link to fitbit API-Docs: https://dev.fitbit.com/build/reference/web-api/

Thank you

Fabian

Feature proposal: Add multiple Measurement Name

It is possible to add a custom: Measurement Name which is nice, but it might be useful to have ability to store multiple of those...

If user could store multiple names and values it would add additional value. I can imagine 3 more with each measurement like water level, muscle mass, bones mass etc... I am not suggesting to hardcode the values (those were just examples), diabetics might record sugar level, etc... I suggest just to add ability to store multiple key-values.

Can't install app using Appstore

Hello,
when installing the app using the Appstore I get this error:
Screenshot 2020-10-25 at 11 46 48

Also on another note I would suggest to host the app download on github using github releases, and add the github source repo to the nextcloud app store :)

Tables are not created during installation

A few weeks back I removed version 0.1.2 and noticed there were a couple of tables still in the DB: oc_health_persons, etc. As I wanted to have a clean situation I have dropped these tables. Now I wanted to install version 0.1.3 but the tables are not created anymore, thus I can't create entries for persons etc.

Could you give me a hint how to proceed to have these tables created again? Reinstalling does not do it. Also installing 0.1.1 (version which I started with) does not create the tables.

Thanks and sorry for my ignorance.

Feature proposal: Ability to import GPX files

Add ability to check user defined directory in nextcloud for GPX files (possibly other formats KML, TCX).

Various apps allow track activities (walks, runs, hikes etc) and export to Nextcloud. Currently there is no app that aggregate those data and show in a way that gives an overview (like weekly, monthly, yearly reports).

There is also potential to extract other data, like pulse, step cadence etc. It might open a path to automatically add more data for the reports (highest, lowest pulse, monthly average etc). This would add benefit to user to have more reports without effort.

Nextcloud is capable of displaying data stored during the runs via gpxpod so there is no need for mapping purposes just the summary reports and the data aggregation that are not possible to get out of many files...

It would be motivating to see weekly, monthly, yearly stats (if person made more or less km in activity), in a similar fashion as the weight.

SQL Error while installation on 18.0.10

The following error ocurs on installation through web GUI (Nextcloud 18.0.10:

An exception occurred while executing 'CREATE TABLE oc_health_ces_contexts (id INT AUTO_INCREMENT NOT NULL, description LONGTEXT DEFAULT NULL, insert_time DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, lastupdate_time DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET UTF8 COLLATE utf8_bin ENGINE = InnoDB': SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'insert_time'

Data gone after manual app update from 0.1.1 to 0.1.2

Hi,

As it currently is not possible to install via the nextcloud appstore (see #11), I manually updated the app by copying the contents for the Health-v0.1.2.tar.gz file to the /var/www/nextcloud/apps/health folder. I stopped the app first, deleted the 0.1.1. files and replaced them with the 0.1.2 ones.

After restarting the app on version 0.1.2 my previous created testdata was gone. Is this expected behaviour?

Thx.

Module request: Reduce/Quit smoking

Hello and thank you for a very interesting app! It looks like this is going to be one of the most useful apps in a day-to-day scenario, on par with tasks and calendar. I hope the dev will consider my suggestion for future implementation:

I request a module for people who want to reduce or stop smoking all together.

As tobacco smoking is estimated to kill around 8 million out of the one billion smokers per year (plus 600.000 from second hand smoke) it's safe to say that this is a global health issue.

There is a sore lack of FOSS "Stop smoking" apps, and the ones I've seen so far are either simple "How much did you save by stop smoking"- or Habit based apps. Neither offer a incremental step-down system for those who aren't able to quit on the spot.

I suggest it works somewhat similar to the weight module, with current cigarette use, a target use (less or no cigarettes per day) and a target date.

After a first run wizard or setting screen where the user inputs current status and goals (cigarettes smoked per day, desired goal and date, price per cigarette), the user should get a daily screen with statistics showing "Daily allowance", "Smoked today", "Smoked overall", "Money saved today", "Money saved overall" and a button for Smoked a cigarette.

The weekly dynamic calculation of the "Daily Allowance" would be based on "Starting point", "Desired Goal", previous "Daily Allowance" and "Desired date" (More on this below)

Obviously the user would press the button for every cigarette and add +1 to the "Daily Use", even if it goes "over budget" regarding the "Daily Allowance".

If the user goes over budget by e.g. 25% per week, a warning could show at the start of next week that reminds the user that "Daily Use" is beyond "Daily Allowance" and for them to stick to their own goals while offering a recalculation of the reduction per week if the user isn't able to keep up with the desired reduction.

This also have the added effect that if the users "Daily Allowance" is 0 and he/she adds a cigarette after efficiently quitting, it will trigger the "Over Budget" for next week no matter what.

A suggested system for various calculations like daily cigarette "allowance", that allows both new and existing users to both cut down and quit entirely is below.

Calculation, reduce smoking:

  1. User enters how many cigarettes he/she smokes per day - "Starting Point" (i.e. 20 cigarettes per day).
  2. User enters "Target Use" (i.e. 5 per day)
  3. User enter "Target Date" (i.e. 4 weeks from now)

Week 1:
"Current Use" (20) - "Target use" (5) = Overall reduction of 15
15 less cigarettes / 4 weeks= Reduction rate -3.75 per week (Rounded up to 4)
Starting point (20) - Reduction rate (4) = New "Daily Allowance" (16)

Week 2:
Last weeks "Daily Allowance" (16) - "Target use" (5) = Overall reduction of 9
9 less cigarettes / 3 weeks= Reduction rate -3 per week
Last weeks "Daily Allowance" (16) - Reduction rate (3) = New daily allowance (13)

Week 3:
Last weeks "Daily Allowance" (13) - "Target use" (5) = Overall reduction of 7
7 less cigarettes / 2 weeks= Reduction rate -3.5 per week (Rounded up to 4)
Last weeks "Daily Allowance" (13) - Reduction rate (4) = New daily allowance (9)

Week 4:
Last weeks "Daily Allowance" (9) - "Target use" (5) = Overall reduction of 4
4 less cigarettes / 1 week= Reduction rate -4 per week
Last weeks "Daily Allowance" (9) - Reduction rate (4) = New daily allowance (5)

Week 5 and onwards:
Last weeks daily allowance (5) - Target use (5) = Overall reduction of 0
0 less cigarettes / 0 week= Reduction rate 0 per week
Last weeks "Daily Allowance" (5) - Reduction rate (0) = New daily allowance (5)

Anything above this is considered over-budget. This continues until the user desides to set "Target Use" to 0, whereas the below example comes into action

Calculation, stop smoking:

If existing user who've already cut down:

  1. App uses existing "Daily Allowance" (5)
  2. User updates "Target Use" (i.e. 0 per day)
  3. User updates "Target Date" (i.e. 5 weeks from now)

If new user:

  1. User enters how many cigarettes he/she smokes per day - "Starting point" (i.e. 5 cigarettes per day).
  2. User enters "Target Use" (i.e. 0 per day)
  3. User enter "Target Date" (i.e. 5 weeks from now)

Example:

Week 1:
"Starting point" / Last weeks "Daily Allowance" (5) - "Target use" (0) = Overall reduction of 5
5 less cigarettes / 5 weeks= Reduction rate -1 per week
Starting point (5) - Reduction rate (1) = New daily allowance (4)

Week 2:
Last weeks daily allowance (4) - Target use (0) = Overall reduction of 4
4 less cigarettes / 4 weeks= Reduction rate -1 per week
Last weeks daily allowance (4) - Reduction rate (1) = New daily allowance (3)

Week 3:
Last weeks daily allowance (3) - Target use (0) = Overall reduction of 3
3 less cigarettes / 3 weeks= Reduction rate -1 per week
Last weeks daily allowance (3) - Reduction rate (1) = New daily allowance (2)

Week 4:
Last weeks daily allowance (2) - Target use (0) = Overall reduction of 2
2 less cigarettes / 2 weeks= Reduction rate -1 per week
Last weeks "Daily Allowance" (2) - Reduction rate (1) = New daily allowance (1)

Week 5:
Last weeks daily allowance (1) - Target use (0) = Overall reduction of 1
1 less cigarettes / 1 weeks= Reduction rate -1 per week
Last weeks daily allowance (1) - Reduction rate (1) = New daily allowance (0)

Week 6:
No daily allowance, anything above 0 is considered over-budget.

Calculation, Money saved (From 20 to 5 cigarettes per day)

Per day

  1. Starting point (20 cigarettes per day) - Daily use (5 cigarettes) = (15) cigarettes avoided today
  2. (15) cigarettes avoided today * Price per cigarette (i.e. 10 Money) = (150) Money saved today

Overall

  1. All "Money saved today" added up for a dynamic overview.

Note that these are dynamically calculated from "Starting Point", not "Cigarettes Smoked" in comparison to "Daily Allowance" so even a heavy smoker who've cut down, used the recalculation feature and stayed at a reduced rate for a few months but now wants to quit entirely will still get accurate savings.

Translation

Hello,
If you want, i can translate your plugin on french language.
I read your code, and i can modify your template to have a translation capcity.

If you are interesting, reply me ;)

Rework input field menu listings

My suggestions to new input field menu listings.

I'd love to contribute in any way I can to this very promising NC app, hope my ideas are welcome and would love to hear other suggestions.

Feeling

Mood

A bit more neutral and general, allowing it to cover more moods. The first three are clearly on a scale from good to better, so I would assume the bottom two are from bad to worse. But they seem to serve other functions. It may be lost in translation but "Don't know" and "Don't ask me" seem like "Not available" and "Refuse to answer". I suggest a rewording:

Perfect -> "Fantastic", "Great" etc.
Fine -> Good
Okay
Don't know -> "Bad", "Low" etc.
Don't ask me -> Horrible

Pain

As per #41.

0 - No pain
1 - Very Mild
2 - Discomforting
3 - Tolerable
4 - Distressing
5 - Very Distressing
6 - Intense
7 - Very intense
8 - Utterly Horrible
9 - Excruciating
10 - Unimaginable

Energy

General descriptions to complement the pain scale's level descriptions.

0 - Bedridden
1 - Very low
2 - Low
3 - Somewhat low
4 - Below normal
5 - Normal
6 - Above normal
7 - Somewhat high
8 - High
9 - Very high
10 - Undescribable

Or even simplify it a bit. I prefer the 5+1.

0 - Bedridden
1 - Very low
2 - Low
3 - Normal
4 - High
5 - Very high.

Sleep

Quality

  1. Perfect
  2. Fine
  3. Okay
  4. Don't know -> Low
  5. Don't ask me -> Very low

Smoking

Desire level -> Withdrawal symptoms

Nothing -> 0 - None
a litte -> 1 - Noticable
okay -> 2 - Some
more -> 3 - Moderate
high -> 4 - Strong
very high ->5 - Very strong
extreme -> N/A

Feature request: weight accuracy

When I am correct, currently the weight can only be give in "whole numbers" (like 80 kg). Would like to be able to enter a weight with 1 decimal (like 80.7 kg).

Suggestions for "Feeling", add "Energy"

Is it possible to implement "Energy" levels as a parameter in the "Feeling" registration?

It would aid both people suffering from depression and other psychological difficulties (seems to go along with the already implemented fields) along with people wanting to track energy levels in relation to food intolerance.

Thank you for your consideration.

Suggestions for "Feeling", standardize "Pain"

The NRS-11 (Numerical Rating Scale 0-10) is a 11-level, standardized pain scale that seems pretty much de-facto standard for over-all pain description with every medical practitioner I or anybody I know have ever encountered. It describes how disabling pain is in relation to ADL (Activities of Daily Living).

Rating | Pain Level
0 | No Pain
1–3 | Mild Pain (nagging, annoying, interfering little with ADLs)
4–6 | Moderate Pain (interferes significantly with ADLs)
7–10 | Severe Pain (disabling; unable to perform ADLs)

https://en.wikipedia.org/wiki/Pain_scale#Numeric_rating_scale

I suggest using this, along with an explanation of the different levels (3+1) rather than the current 4+1 scale as it could create uncertainty if raw data is handed over to medical practitioners.

Thank you for your consideration.

BMI not calculated

I've set all requested information (including one weight measurement), but this message is displayed: "To calculate your BMI, please set your weight in the table below and you age and size in the person settings.".
If i add a second weight measurement to the table, BMI is calculated. Same is true for the "target" section and the blue bar.

NC 21

It doesn't work since the update to NC 21.

Exception after updating to NC21

After upgrading to NC21, my Health screen is empty. I used to have a profile for myself with weight data, but all I see is the "New Person"-button. Checking the database reveals that my data is still in there, there's still a person, but somehow it's just not shown anymore.

Checking the browser console, I see that the request to /index.php/apps/health/persons results in a 500. The logs mention a message Could not resolve personsService! Class personsService does not exist. So that at least explains the empty persons list, phew.

Any way of solving this on my own, or does this require an upgrade from this app? Anything I can do to help troubleshoot?

Investigate Kailona

There is another Nextcloud app, Kailona, which has a similar scope. It might be useful to do some research on that app.

One main difference is that it requires a (separate) FHIR server (see also Forum: Kailona not designed for end-users right?).
Just for reference: In #18 it was proposed to use Open mHealth for our purposes.

Introduction:

Resources:

Bar portion representing `bodyfat` field of Weight graph vanishes when `mearurement` field is populated...

As indicated in Issue #37 I calculated the BMI via a spreadsheet using a formula found on Wikipedia. Today I decided to populate the extra field with my calculation of the BMI because the one auto calculated on the top of the Weight Module seemed to be double what I expected it to be. Judging by the chart at Wikipedia BMI chart, my calculation is correct.

I decided to use that measurement field to graph my BMI. The table populated as expected, and the records displayed at the bottom of the Weight page as expected. The other fields had no change. The BMI and Percent Body Fat values are similar so shouldn't have any trouble plotting on the secondary axis. Instead, neither is shown where before populating the measurement field the bodyfat displayed a nice thin bar graph representation.

I don't think this is worth writing a second issue, so I'll make another point here. I think the BMI math needs to be checked with respect to the mass units a person chooses and the height units that are fixed in centimeters.

Feature request: fluid intake

Would like to be able to add when and how much I drank (relates primarily to water intake). As it would be tedious to open up Nextcloud every time a new entry can be made, a mini phone app would be brilliant.

Adding Request: Blood values and Corona Test Results

Hello stranger,

I use your app and I must say, I am impressed.

However, I want to ask you, if you could add two different features to the app:

  1. Possibility to insert blood-value-results
  2. Possibility to insert Corona-test-results

How do imagine these two features?

The first feature, should give me the opportunity to add parameters, such as Hemoglobine. It would be nice to see the development of these values over time. It would also be nice to upload the results as a pdf file.

The second feature would be much simplier, it would be great to insert the date when the test was taken, the result (if positive or negative) and the possibility to upload the result as a pdf.

DM me for further clarifications.

Table views extends

Add optional rows for grouping by

  • Years
  • Months
  • Weeks
  • Timeperiods

And show avg for every group for number-columns.

Feature: Use this to gain weight

So I want to use the app to measure my success in gaining weight.

But here is what I got:

You started with 78kg for your target. Your actual weight is now 76.4kg and your target values 80kg.

Good, you reached your target! 

Can't create New Person in 0.1.2

Hi,

When I try to create a New Person, nothing happens (no error message visible in de app. In the Nextcloud log I find:

| Doctrine\DBAL\Exception\InvalidFieldNameException: An exception occurred while executing 'INSERT INTO "oc_health_persons" ("insert_time", "lastupdate_time", "user_id", "name", "enabled_module_weight", "enabled_module_breaks", "enabled_module_feeling", "enabled_module_medicine", "enabled_module_activities", "weight_unit") VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["2020-10-25 12:11:34", "2020-10-25 12:11:34", "myname", "Tester", true, false, false, false, false, "kg"]: SQLSTATE[42703]: Undefined column: 7 ERROR: column "enabled_module_medicine" of relation "oc_health_persons" does not exist LINE 1: ...enabled_module_breaks", "enabled_module_feeling", "enabled_m... ^
-- | --

Cheers.

Improvement Ideas

I just started using this app yesterday so I know having ideas about it is a bit of a dick move; I'll try to not live up to that expectation.

The reason I started was I'm about to stop using a second mobile device (Nexus 5 running UBPorts), which I have been doing my weight tracking on, and a couple of other things. That device is not at full strength anymore.

I have over a year of tracking with the WeightTracker app on that and your app on Nextcloud is very similar but more advanced. I couldn't figure out where they store their data on the Nexus 5; seemed to be an SQLite DB for it but I was wrong. Transposing all that felt like a big lift and you didn't have an import facility either. I made a spreadsheet to make things less painful and then quickly dumped the data directly into your tables via my phpMyAdmin connection.

As my tinkering went on I made a calculator for the bodyfat percentage field based on the inputs you already ask us user's to put in. (aside: I don't like that your weight table doesn't have a primary key that includes the date field and the person_id and that you are passing the insert_time & lastupdate_time as variables from the app instead of letting automation at the database level do it, but I don't know shit about app development or CMS design so I might be daffed about that.)

I got my formulas from here:

Download my spreadsheet here:

So I think you can auto-populate that body fat field with a calculation instead of just throwing a 0 value in where you could just toss the NULL there.

Request: Support for NC v20

Hi there,

This looks like a really interesting project. Will you be supporting NC v20 soon? I would love to test this app out.

Provide a method for importing data

As a user, I would like to be able to import the data from my various devices (esp., smart scale, Fitness Trackers, pressure cuffs, etc).

There is already a ticket (#17 )for importing gadgetbridge data, but this request goes a little further than that as it would allow for any type of import.

Since you would need to have some kind of standard, I would recommend open mHealth schema.

Custom column entries are not saved

I added a custom column named "size" to weight and activated it. However, no matter what I type in the size field, it's not saved, but weight entries are. This seems to be a bug.

System: Nextcloud 20.0.7 (bare metal)
PHP 7.4.14
MariaDB 10.5.8

Feature proposal: blood pressure

For various reasons it would be good to be able to record blood pressure (bp) since its an important health indicator.

Things to consider:

  • ability to record multiple values per day
  • ability to group recordings by time of the day in a graph
    • ability to define custom groups based on time ranges or similar
    • example:
      • green line: 08:00-11:00/morning
      • red line: 11:00-14:00/noon
      • orange line: 14:00-17:00/afternoon
      • blue line: 17:00-22:00/evening
      • black line: rest/night
      • dotted: overall avg
    • time ranges can possibly be just labels for fixed input-fields like additional columns in weight section, this would simplify the time-grouping
  • ability to combine the plot with the weight plot
  • Ability to define target
    • overall avg
    • [per group]

#15 is proposing fluid intake, this is also related as well as food intake would be. But i think these will be different new features. Anyway in case all get implemented, connecting the data somehow to the bp plot would be also good.

PHP 8 Support

Related to #52, PHP 8 support is introduced as of v21, but 7.x support will continue for the time being. Please add support as you can. Cheers.

No data showing after update to 0.3.0

I updated to 0.3.0 yesterday and today I am not seeing the Weight or Sleep data I had entered.

For Weight, I still see a row for each day I entered data, with the date, but no content. For Sleep it appears to be completely empty and reports "No data yet". It does still have my Person settings.

This is Nextcloud 20.0.6 with PHP 7.2.24-0ubuntu0.18.04.7 and SQLite.

The only error I see in the logs that mentions health is old, before the update:

[no app in context] Info: Symfony\Component\Routing\Exception\RouteNotFoundException: Unable to generate a URL for the named route "health.page.index" as such route does not exist. at <<closure>>

 0. /var/www/nextcloud/lib/private/Route/Router.php line 372
    Symfony\Component\Routing\Generator\UrlGenerator->generate("health.page.index", [], 1)
 1. /var/www/nextcloud/lib/private/Route/CachingRouter.php line 60
    OC\Route\Router->generate("health.page.index", [], false)
 2. /var/www/nextcloud/lib/private/URLGenerator.php line 83
    OC\Route\CachingRouter->generate("health.page.index", [])
 3. /var/www/nextcloud/lib/private/NavigationManager.php line 282
    OC\URLGenerator->linkToRoute("health.page.index")
 4. /var/www/nextcloud/lib/private/NavigationManager.php line 108
    OC\NavigationManager->init()
 5. /var/www/nextcloud/apps/theming/lib/ThemingDefaults.php line 183
    OC\NavigationManager->getAll("guest")
 6. /var/www/nextcloud/lib/public/Defaults.php line 160
    OCA\Theming\ThemingDefaults->getShortFooter()
 7. /var/www/nextcloud/lib/private/Template/JSConfigHelper.php line 291
    OCP\Defaults->getShortFooter()
 8. /var/www/nextcloud/lib/private/TemplateLayout.php line 210
    OC\Template\JSConfigHelper->getConfig()
 9. /var/www/nextcloud/lib/private/legacy/OC_Template.php line 183
    OC\TemplateLayout->__construct("guest", "")
10. /var/www/nextcloud/lib/private/Template/Base.php line 132
    OC_Template->fetchPage()
11. /var/www/nextcloud/lib/base.php line 303
    OC\Template\Base->printPage()
12. /var/www/nextcloud/lib/base.php line 956
    OC::checkMaintenanceMode()
13. /var/www/nextcloud/index.php line 37
    OC::handleRequest()

POST /cloud/index.php/apps/text/session/sync
from 192.168.2.3 at 2021-01-25T22:42:57+00:00

Feature request: women's cycle

Hi,

Would like to propose an additional feature.

Not being a woman myself, I am on a bit thin ice here. My wife would love to see an option to keep track of her cycle:

  • start
  • finish
  • predictions for the coming 3-6 months (based on the last 6? months)
  • display the last and predicted cycles in a separate NC calendar, so it can easily be blended out when needed

App looks very nice so far. Keep up the good work!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.