An Android assistant for personal medication management

Overview

Calendula

Calendula is an Android assistant for personal medication management, aimed at those who have trouble following their medication regimen, forget to take their drugs, or have complex schedules that are difficult to remember.

The app is available for download in Google Play, F-Droid and Github.

Get it on Google Play Get it on F-Droid Get it on Github

Visit our web page for more info https://citius.usc.es/calendula/

Calendula News

We have some good news!

Our Regional Public Health Authority (SERGAS) has adopted Calendula to be connected with its Electronic Prescription System, resulting in the extension of previous features from the open source version, to include:

  • Automatic download of the patient medication regime.
  • Access to the medication pickup calendar
  • Automatic recommendation of the best dates to optimize the number of visits to pharmacy
  • Acess to the anticoagulant dosing regime.

The integration process has faced two key issues: interoperability and security.

With regard to the first one, the adoption of the international standard HL7-FHIR (Fast Healthcare Interoperability Resources) will smooth the way for an easy deployment in other healthcare systems.

Regarding security, the OpenID Connect specification has been adopted, allowing Calendula to verify the identity of users based on an authentication performed by an authorization server provided by SERGAS.

Along the way, we have worked on a lot of bug fixes and feature improvements, including:

  • Increase Android API Level to level 29.
  • Update notifications and background services to the latest Android versions.
  • Update Gradle, Kotlin and Java versions.
  • Migrate Android libraries to AndroidX.
  • Update the following libraries: Google, Iconics, Material-Drawer, Fast Adapter, ButterKnife, Caldroid and Android Jobs.
  • Improve the UI to fix update problems and NPEs.
  • Localization updates: new languages will be included and updates will be provided for existing ones.
  • Memory performance updates: bitmaps will be migrated to vectorial formats.
  • Fixes regarding notifications and battery saving mode: added the option to exclude Calendula from battery saving mode, to avoid Calendula to be suspended, and thus still be able to get notifications all the time.
  • Other minor bug fixes.

These will soon be made available in this repository and applied to the version in Google Play. Stay tuned!

Getting Started

These instructions will get you a copy of the project up and running on your local machine ready for development. If you want to help developing the app take a look to the contributing section, at the end.

Development environment setup

We use Android Studio (the official Android IDE) for development, so we recommend it as the IDE to use in your development environment. Once you install Android Studio, you can use the Android SDK Manager to obtain the SDK tools, platforms, and other components you will need to start developing. The most important are:

  • Android SDK Tools and Android SDK Platform-tools (upgrade to their last versions is usually a good idea).
  • Android SDK Build-Tools 27.0.3.
  • Android 8.1 (API Level 27) SDK Platform.
  • Android Support Repository

You can also install other packages like emulators for running the app, if you don't have or don't want to use a real device. The minimum supported Android version is 4.1, Jelly Bean (API level 16).

Building and installing the app

First of all you need to get the source code, so clone this repository on your local machine:

git clone https://github.com/citiususc/calendula.git
cd calendula

Android Studio uses Gradle as the foundation of the build system, but it's not necessary to install it separately. Instead, you can use the included Gradle Wrapper. To build the app, open a terminal in the repository folder and run:

./gradlew clean assembleDevelopDebug

Note: "developDebug" is the build variant that we use for development. To see other variants, please check Calendula/build.gradle.

Then you may install the app on a device or emulator:

adb install Calendula/build/apk/develop/debug/developDebug-[version].apk

These tasks can also be executed from Android Studio with a few clicks.

App versions

We maintain releases of Calendula on Google Play, F-Droid and here on Github.

  • The latest version of the app available on those pages reflects the code of the master branch.
  • Release branches are usually deployed through the Google Play BETA channel before they are made available to everyone. If you want to be a member of the testing community, join the testing group on Google Groups, and you will automatically receive the updates from the BETA channel like normal updates from Google Play.

Join the BETA channel: click here!

Check out the contributing guidelines for more info about the branching model.

How does it look?

We try to follow Material Design principles. Take a look at the result!

Future work

We have a lot of development ideas, and we are open to newer ones. Below are some interesting features that could be very useful:

  • Information about nearby pharmacies, their locations and timetables
  • Trip assistant (how many pills I need for this weekend?)
  • Introducing gamification concepts to improve adherence.

Artwork attribution

We are using the the following resources in the app:

Contributing

Feel free to fork and send a pull request if you want to contribute to this project! Notice that Calendula is licensed under the terms of the GNU General Public License (v3), so by submitting content to the Calendula repository, you release your work under the terms of this license.

Before starting, take a look at our contribution guidelines.

I would like to contribute, but I'm not a developer...

If you're not a developer but you want to help, don't worry! You can help with app translations, by joining the BETA group, and much more! Everyone is welcome!

License

Copyright 2020 CITIUS - USC

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Comments
  • Insistent alarms are difficult to silence

    Insistent alarms are difficult to silence

    When the insistent mode is enabled and an alarm sounds, it doesn't stop until the notifications panel is opened, even if the user opens the app. This is not a common problem, but it has occurred in several devices so far.

    enhancement 
    opened by angelpinheiro 14
  • Showing only time slots for scheduled dosis at Home tab

    Showing only time slots for scheduled dosis at Home tab

    Hi! When at Home tab, time is shown in hourly slots. Those slots are occupied when a dose is due at any of them, but free slots are also shown. Even though this could be useful as a measurement of time until the next dose, when you have several patients with several intake times each day, you much scroll longer to reach a given point, frequently through empty areas of the timeline.

    Please, what do you think? Thanks!

    accepted 
    opened by rrodrigueznt 9
  • Generate an empty SQLite database during build

    Generate an empty SQLite database during build

    THis database could be given as input to SchemaSpy in order to obtain a good documentation of calendula DB.

    Even better, we could also create database similar to the production one, which makes schema dump way more useful.

    development 
    opened by Riduidel 7
  • context.startService(serviceIntent); is causing daily crashes at 1 am

    context.startService(serviceIntent); is causing daily crashes at 1 am

    Hello,

    I have noticed that the following code : context.startService(serviceIntent); in calendula/Calendula/src/main/java/es/usc/citius/servando/calendula/scheduling/AlarmReceiver.java is causing daily crashes when the app tries to create the daily schedules for the pills.

    This is the error message: java.lang.IllegalStateException: Not allowed to start service Intent

    The root cause of this issue is caused by the api 26 and above, here are some details:

    https://stackoverflow.com/questions/46445265/android-8-0-java-lang-illegalstateexception-not-allowed-to-start-service-inten

    JobScheduler should be used instead.

    Regards

    under-review 
    opened by suhaibibrahim 7
  • App crashes once you try to access to

    App crashes once you try to access to "settings"

    The app crashes once you tap on the "settings" item on the menu ("ajustes" since we are using the spanish version) the affected version is 2.3.3 running on Android 5.0

    opened by mperezCeibal 7
  • Calendula app crashes when accessing notification settings

    Calendula app crashes when accessing notification settings

    Expected behavior

    The app should remain stable and should not crash when notifications sound is changed.

    Actual behavior

    The app crashes when a new notification sound is selected and continues subsequent crashes that ensures users can no longer notification settings.

    How to reproduce

    Download and install latest app version

    Click on settings (This can be accessed by clicking on the 3 lines in the top left corner of the app)

    Rotate phone to landscape mode

    Click on notifications

    Change notification sound to an mp3 song preferably

    The app crashes and notification sound cannot be accessed again until it is re-installed

    • Browser/App version: Calendula app version 2.5.5 *Operating system: Android 6.0

    Recording Of The Bug

    This is the recording showing the crash when trying to set the notifications settings https://youtu.be/Mq7dT0daAIA

    This is the recording showing subsequent crashes https://youtu.be/RPYrDiEuX4U

    bug 
    opened by jubreal 6
  • WIP: Use exact alarm scheduling for API versions >= 19

    WIP: Use exact alarm scheduling for API versions >= 19

    Fixes #52

    Tested for two days on my device (CM13, Android 6.0.1), alarm times are exact with these changes. No errors were observed, but I could not yet test on older devices. Also, no significant battery usage increase happened. Looking forward to your testing and feedback.

    opened by fabian-z 6
  • App crashes when editing duration of schedule on Galaxy Note 4

    App crashes when editing duration of schedule on Galaxy Note 4

    Hi,

    Thanks for your efforts. On Samsung Galaxy Note 4 with Android 5.0, when editing duration of schedules, the app crashes. It should be an issue caused by buggy built-in DatePicker on such Samsung Lollipop devices. I found the following Stack Overflow posts discussing this issue: https://stackoverflow.com/questions/28618405/datepicker-crashes-on-my-device-when-clicked-with-personal-app/31855744 https://stackoverflow.com/questions/28345413/datepicker-crash-in-samsung-with-android-5-0

    One possible workaround is to set special theme for the DatePicker. That would make the picker looks different on such devices but may avoid the crashes.

    bug 
    opened by LiliWeiSE 5
  • Add birth control lady pills schedules

    Add birth control lady pills schedules

    It would be great if you could also birth control lady pills and corresponding schedules. So that you can add cycle times like the following commons: Days to consume + break 21 + 7 22 + 6 23 + 5 24 + 4 26 + 2 28 + 0 35 + 7 42 + 7 63 + 7 84 + 7

    opened by DJaeger 5
  • App translations (FR/EN)

    App translations (FR/EN)

    Hi,

    In the 1.2.1 (no 1.2.2) in F-DROID there is some non-english labels. I would love to have this app in French too. Is there any plans for more traductions ? I would like to help to translate too if you want.

    Thanks.

    opened by rhaamo 5
  • Notifications don't work

    Notifications don't work

    I have created schedules, but I never receive notifications for those schedules. I am using a OnePlus 5, with Android 9.0 (but had Android 8.1 until a few days ago).

    opened by sandy-8925 4
  • Is it possible to export/import schedules?

    Is it possible to export/import schedules?

    Hi, first of all, thanks for calendula. Second, I would like to know if it is possible to export/import the schedules (old and currently activated) to migrate to a new device. If not, is it possible to look for a specific file inside device 1 and copy it on device 2 so calendula on device 2 will read it and have the same schedules as in device 1? Thanks in advance

    opened by iluvatar1 0
  • Light gray FAB is easily overlooked

    Light gray FAB is easily overlooked

    Even experienced users might easily overlook the app's FABs that

    • don't sit where the user expects them to be: Forms are processed in reading direction.
    • camouflages in a colour outshined by the white background

    A small dialogue – asking wether or not the user wants to leave the current form unchanged – would be awesome, and a colour on the FAB sitting right above the virtual keyboard would make the whole process more unambiguous and thus quicker to complete.

    opened by uli-on 0
  • Notification jumble

    Notification jumble

    Aside from the issue with not reminding of medicaments running out of stock (#172) there's two more quite annoying ones with relation to reminders' handling:

    1. After renaming a routine, a reminder urges you to take the medication(s) another time.
    2. Should you have swiped away a reminder inadvertedly (please think of fresh reminders being top priority for some seconds and then changing place lower down the stack of reminders, but also caused by the fat finger syndrome), then there's no way to bring back this reminder. For a positive example see RxDroid (also FOSS): altering a medication's state from "taken" to "not yet taken" instantly brings up the reminder again.
      This Calendula behaviour might be avoided with a non-swipable, fixed, reminder, which I'd prefer as optional from the preferences, for there might be no way to draw out certain reminders' dialog buttons other than by drastically shortening the reminder queue and swiping aside some of these.
    opened by uli-on 0
  • New schedule:

    New schedule: "When needed"

    Some medications are taken on a "when needed" basis, e.g. pain killers. I could not find a way, how to do this in the current version.

    Why would this be A Good Idea?

    1. If every med take is entered into the app, you should get a warning, when the stock runs low (#172)
    2. If a log were maintained by the app, you could probably detect a pattern of your intake (#108)
    opened by sphh 0
  • Click on old medication and crash

    Click on old medication and crash

    Hello,

    In the Home section if I click on a medication that already expired from several hours the app crashes and it doesn't let me select the thick box to mark the medication as taken.

    Thanks for the great app anyway. 👍

    opened by sharemind 0
Releases(v2.5.11)
Owner
CiTIUS
Centro Singular de Investigación en Tecnoloxías da Información, Universidade de Santiago de Compostela
CiTIUS
Personal Android enhancement app. For personal use.

dtinth’s Tools A personal Android enhancement app that I use on my device. Morse code notifier vibrates my phone when I receive a notification. Notifi

Thai Pangsakulyanont 8 May 9, 2022
A Mobile application (Android), which facilitates the search for a medication, a pharmacy using geolocation.

#Pharmacom Pharmacom, est une application mobile natif - compatible avec mobile et tablette. Cette application a comme but principale de servir les ci

Mezgour Yassine 2 Oct 27, 2021
Google Assistant App Actions on Android

App Actions let users launch specific features in your app using Google Assistant. By enabling App Actions to extend your app, users can easily deep link into your apps via Assistant by simply speaking a request to the Assistant.

MindInventory 6 Oct 18, 2021
An offline assistant for Android phones

The Sapphire Assistant Framework If you are looking for an Android assistant that is easy to use, flexible, and respects your privacy then look no fur

Christopher Carroll 286 Dec 28, 2022
Alan AI: In-app voice assistant SDK for Android

Alan AI: In-app voice assistant SDK for Android Alan Platform • Alan Studio • Docs • FAQ • Blog • Twitter Quickly add voice to your app with the Alan

Alan AI 1.3k Dec 31, 2022
How to integrate classic App Shortcuts with Google Assistant through the new Capabilities API

Assistant Shortcuts (App Actions) En este ejemplo, revisaremos el uso de los clásicos Shortcuts de Android repotenciados con Google Assistant, haciend

Carlo Huamán 3 Jun 20, 2021
Athena - an open source Google Assistant replacement

A free and open source replacement for Google Assistant on Android devices, meant to integrate with the Sapphire Framework. It contains both speech-to-text and text-to-speech services. It does not require Google services or network connectivity

Christopher Carroll 137 Nov 20, 2022
HideDroid is an Android app that allows the per-app anonymization of collected personal data according to a privacy level chosen by the user.

HideDroid An Android App for preserving user privacy HideDroid is an Android app that allows the per-app anonymization of collected personal data acco

null 100 Dec 12, 2022
Plannr is an organizational platform, in the form of an Android app, that helps university students coordinate their everyday routine, from schoolwork and expenses to their personal life.

Plannr Plannr is an organizational platform, in the form of an Android app, that helps university students coordinate their everyday routine, from sch

null 7 May 1, 2022
Sanctuary relies on the Android Work Profile APIs to create a self-contained work profile on a user's personal device.

Sanctuary relies on the Android Work Profile APIs to create a self-contained work profile on a user's personal device. Managed apps, data, and management policies are restricted to the work profile, keeping them secure and separate from personal data while maintaining user privacy.

Jonathan Odul 1 Dec 15, 2021
Noted is a Clean Architectured android application for taking personal notes

Noted is an android application for taking notes. The user can create, edit, review, and delete notes. They also can specify a category for each note.

null 0 Apr 25, 2022
Application to solve a personal problem, which was the wish to have a simple app that handles a market list with prices, quantity and total price

Market List Application that handles a market list offline in device's storage system. The list can be just pasted in a big edit text field and the ap

João Gouveia 0 Nov 3, 2021
Money Manager Ex is a free, open-source, cross-platform, easy-to-use personal finance software

Money Manager Ex is a free, open-source, cross-platform, easy-to-use personal finance software. It primarily helps organize one's finances and keeps track of where, when and how the money goes.

Money Manager EX 1.2k Dec 31, 2022
MeuRastreio - Tracking app for studies and personal use

Meu Rastreio APP para rastreio de encomendas rastreáveis pelos correios. Criado

David Castro 10 Dec 15, 2022
Personal notes and reminders app

Notes App App de anotações e lembretes pessoais, onde é possível adicionar um título com texto de componente, mudar a cor do lembrete, editar ou delet

Ruan Ruiz 1 Mar 4, 2022
A transaction management android app which allows you to verify records from both parties before addition.

Transact - Transaction Management Application Description Whenever we lend money to some people, friends, colleagues, we need to keep track of it to r

Sayantan Banerjee 21 May 17, 2022
SimpleTodo - An android app that allows building a todo list and basic todo items management functionality

Pre-work - SimpleTodo SimpleTodo is an android app that allows building a todo l

null 0 Dec 31, 2021
SimpleToDo is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item.

SimpleToDo is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item.

null 0 Jan 3, 2022
ApnaKhata is a free staff attendance and payroll management android app

ApnaKhata ApnaKhata is a free staff attendance and payroll management android app that can be used by owners and employees according to their perspect

Nishanth 2 Oct 27, 2022