Giter VIP home page Giter VIP logo

gerilife / wellbeing Goto Github PK

View Code? Open in Web Editor NEW
13.0 5.0 6.0 10.01 MB

Welbeing activity log and visualization tool.

Home Page: http://geri.life

License: GNU Affero General Public License v3.0

JavaScript 75.71% HTML 16.33% CSS 0.85% Python 5.76% Gherkin 0.73% Vue 0.57% Shell 0.05%
activity-counts activity-trends wellbeing activity-heatmap emotion visualization elderly elderly-people eldercare nursing

wellbeing's People

Contributors

allcontributors[bot] avatar brylie avatar dependabot[bot] avatar erikpel avatar marla-singer avatar shailee-m avatar unit111 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar

wellbeing's Issues

Set resident 'Active' threshold

Residents have different needs regarding healthy activity level. Currently, our system has a global 'Active' level threshold of five (or more) activities over the past seven days.

Add a 'recommended activity level' field to resident records, and calculate activity levels based on individual recommendation.

Refactor individual resident page for reactive data updates

The individual resident page currently renders charts only once, via the Template.rendered callback. As resident data may change dynamically while users are viewing the page, it may prove useful to allow reactive page updates. This pattern can be used throughout the application, including in the process of creating a reactive administrative dashboard.

Task

Refactor all page elements on the individual resident page, so that they update reactively when server data is sent to the client. Specifically, the following page elements should refresh or re-render when model data changes:

  • Activity trend chart (scatterplot with trend line)
  • Activity calendar heatmap
  • Activity table

Criteria

  • Individual Resident page follows uni-directional dataflow approach
    • 'smart-component' or parent template manages data subscription
    • parent template passes data in to child templates via named data contexts
    • child templates render data
    • child templates reactively update when data model changes
  • Individual Resident template subscribes to all relevant data subsets for a given resident
    • resident details (name, etc.)
    • resident activities
  • Sub-templates on the individual resident page re-render when the underlying data changes
    • activity trend chart
    • activity calendar heatmap
    • activity table

Challenge

The page elements are rendered via non-reactive charting libraries, so need event handling logic to refresh when the data changes. This can be achieved via an autorun() block that triggers a refresh or re-render function on each template element when the model data changes.

Keep revision history of activity edits

Administrators may want to see the history of changes to system activities. Determine how to keep revision history for edits, and decide whether it is high priority for this project.

Add chart for resident emotions

In order to make the 'emotions' feature useful, we should display emotions on the resident profile page. Determine a good chart type and add the emotions chart to the resident profile template.

Take screenshots of updated UI components

Over the past few months, there have been several improvements and additions to our UI components. Create screenshots of these UI components and add them to the project documentation. This task includes populating the platform with temporary data, so that the screenshots demonstrate live data.

Criteria

  • Screenshots exist for most or all significant UI components
    • Individual resident page
      • Activity trend chart
      • Activity calendar heatmap
      • Activity table
    • Home page
      • Residents status indicators
      • Residents activity status trend graph
    • Homes page
    • Administrative dashboard (settings page)
    • Forms
      • Add activity form
      • Add resident form
    • Emotional wellbeing input (faces)

Related issues

  • #32 - mock data scripts would help populate project with data for screenshots

Add Edit/Delete activity buttons to Resident Activities table for single resident

It may be useful for users to delete/edit activities while viewing a single resident activity table. However, the following should be observed:

  • only activities within 7 days should be editable
  • when 'deleting' a resident activity with other residents, the single resident is removed
    • the activity is not actually deleted, so that it does not affect other resident data

The seven day activity edit/delete feature is already active on the 'manageActivityButtons' template. The additional logic to only remove a single resident upon 'deletion' needs to be written.

Large gap on left side of resident activity trend chart

Observed results

When viewing a resident page, under the Trend tab, there is a large gap on the left side of the trend chart.
activity-chart-gap-increased

Expected results

The data should fit between the left and rightmost tick marks, including a trend line spanning the entire data set.

Upstream bug report

This is related to the Mozilla Metrics Graphics charting library. An issue has been filed with the upstream developers.

Add edit form for Home

As a system administrator
I need to edit home details
so that I can manage system data

Allow Home page Activities query to be adjusted

On the individual Home page, the Activities section is currently hard-coded to 30 days. Add three or more toggle buttons allowing users to get a report for the last:

  • 7 days
  • 30 days
  • 90 days

When selecting a query value, adjust the template subscription to the selected value.

Add feature to export data

As a failsafe, users may need to export their data. Add a feature in the Admin Settings allowing Admin users to export all data.

Activity edit form

It is not currently possible to edit activities. Create an "Edit Activity" form. Only administrators should be able to edit activities.

Add i18n tags to template texts

In order to internationalize the user interface texts, we need to add i18n tags to the templates. Install the i18n package and internationalize all, or most, user interface texts.

Enable timezone offset in daily reports

Daily reports are currently hard coded to run at 23:59 in the server's local timezone. Add timezone support to the cron jobs, and possibly allow them to be configured via the settings UI.

Consider refactoring Groups to Homes and vice versa

It may be easier to conceptualize Homes containing groups, rather than Groups containing Homes. Also, groups may be an optional addition to a home, e.g. for small homes with only a few residents. Consider how to refactor the system so that homes are a high level container with optional groupings of residents therein.

Add sparkline plot showing trend in resident activity levels

Create a multi-line sparkline plot showing activity levels over time for residents at a given home. This will help nurses to understand how resident activity levels are trending over time.

User story

As a nurse,
I want to see the activity trend for residents in my ward over time
so that I can tell if it is trending upwards, downwards, or stable

Related issue

There is an open support request on MetricsGraphics, asking about a particular data structure for this visualizaiton.

Automatically deactivate inactive users

In order to make it easy to manage system users, we can offer a feature that deactivates users who have been inactive over some period. There should be a configuration user interface, so the feature is not enabled by default.

Upgrade project packages and dependencies

Run an update to make sure project packages have latest possible versions. Manually update any dependencies as well. Consider removing any packages found that are not currently in use.

Fix 'add activitiy' form

The 'add activity' form does not work on iOS. Re-write the form, so that it works with evergreen browsers.

Sum activity minutes on a single day for individual resident

A resident may be active multiple times on a given day, as represented in activity logs. The activity charts currently show only one activity record, and so do not represent the full activity log for a given day.

Task

  • Sum the activity minutes for a given day, using this recipe
  • Ensure the resident profile activity line chart displays the activity sum
  • Ensure the resident profile activity calendar/heatmap displays the activity sum

Add stacked bar chart showing resident activities by type on Home page

User story

As a staff member
I would like to see the number of resident activities by activity type
so that I can decide what resident I should choose for an activity of a certain type

Description

On the homes screen, design a view to show the number of activities grouped by resident and type.

Examples

This display may take the shape of a table or stacked bar chart. In the table example, there would be a row for each resident and a column for each activity category with the number of corresponding activities in each table cell. In the stacked bar chart, the y-axis would be the number of activities, the x-axis would contain resident names and the bars would be stacked and categorized by activity type.

Data structure

The server-side method should return an array of objects with the following structure:

  • resident name (full name)
  • activity type (full activity type name)
  • activity count (integer)

Deprecate AdminLTE

As part of a recent Meteor update, the AdminLTE framework started giving errors. We discussed removing AdminLTE, since we are not using it very much. Go ahead and remove AdminLTE, and use the default layout for all settings views.

Filters on Activities page are searching overlapping columns

When searching in the custom filters on the Activities page, the search filter seems to apply to all columns. E.g. searching the resident name column for a value in the activity type column will filter the results based on the activity type.

Add municipality support

Add collection, schema, and UI elements for municipalities. This includes a page displaying all municipalities with aggregate resident activity metrics for each municipality.

Cleanup unused packages

Look at the packages file and remove any unused packages. Specifically, determine which of the following are not used and remove them:

  • yogiben:admin
  • aldeed:autoform-select2
  • mrt:flash-messages
  • aldeed:autoform-bs-datepicker
  • rajit:bootstrap3-datepicker

Add mock data capabilities to project

In order to quickly set up a demonstration of the platform, it would be useful to generate mock data. Add a mock data package to the project and set up some initial mock data scripts to populate project collections.

Criteria

  • Mock data package exists in project
  • Mock data scripts added to project
    • Create home groups (e.g. 3 home groups created)
    • Create homes (e.g. 3-5 homes per home group)
    • Create residents (e.g. 6-12 residents per home)
    • Create activities (e.g. 20-50 activities per resident over last 30 days)

Resources

Display legend in own div, to prevent overlap

On the Home page, the legend for Activity summary by type overlaps the graphic on small screen. Render the legend in a separate div, and add Bootstrap markup for responsive reflow.

Add 'Import data' feature

After users have exported data, they may wish to import it into a different wellbeing instance. Add a feature to import data.

You can find the "export data" button in the "Settings" section, as an admin user. When clicking the button, you should get a data dump of JSON objects.

The Import Data will take these JSON objects and insert them into the correct collections, preserving IDs.

Test alternative UI for Add Activity form activityDate field

The date field on the 'Add Activity' form currently uses Bootstrap date widget. Ideally, the date input will render in an accessible manner for mobile, tablet, and large screens, possibly using native date input UI. Try to get the activityDate field to render a native UI widget on most platforms (Android, iOS, Firefox, and Chrome), or consider using a library such as pickadate.js

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.