Skip to content

CS342/2025-NeutroFeverGuard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NeutroFeverGuard

Beta Deployment codecov DOI

This repository contains the NeutroFeverGuard application. NeutroFeverGuard is using the Spezi ecosystem and builds on top of the Stanford Spezi Template Application.

Tip

Do you want to test the NeutroFeverGuard application on your device? You can download it on TestFlight.

Overview

NeutroFeverGuard is designed to monitor symptoms of chemotherapy patients and enable early detection of febrile neutropenia. The app empowers users to:

  1. Record and track vitals, lab values, medications, and symptoms.
  2. Sync data with the Apple Health app and view interactive visualizations of health trends.
  3. Receive reminders for uploading lab results and notifications in case of febrile neutropenia risk.

User Interface and Key Features

Onboarding Dashboard Adding Data Manually
View Records Connect to Sensor Contact Care Provider

I. Health Record Tracking

  1. Health Data Sources:

Note

How is the data being processed and stored? NeutroFeverGuard uses Spezi Local Storage to store lab results and medication data locally. Other health data is stored in Healthkit. For cloud storage, all data is stored as FHIR elements on Firebase.

Note

Want to understand how CORE Sensor connection, and continuous temperature data flow work? Check out the detailed explanation in Working with CORE Sensor - Bluetooth Connection.

  1. Visualization: Interactive graphs display trends for: heart rate, temperature, oxygen saturation, and absolute neutrophil count. Visuals include trend lines and daily average readings to help users and clinicians better understand health fluctuations. Data is automatically loaded and read from HealthKit.

II. Notifications & Alerts

  1. Critical Health Alerts:
    The app sends immediate alerts if Fever Detected in case of Neutropenia, defined as an elevated body temperature (≥101°F once or sustained at ≥100.4°F over the past hour), when ANC is low (<500 cells/µL). (Definition Source)

    Users will receive a push notification advising them to seek medical attention.

  2. Lab Results Reminders:
    If no lab results are logged for over a week, the app sends a reminder to encourage regular data updates.

Note

Want to understand how fever monitoring alerts and lab results reminders work in the background? Check out the detailed explanation in Fever Monitoring & Lab Notifications.

  1. Neutropenia Severity Classification:
    ANC is automatically calculated based on patient-provided lab values, with severity color codes (Definition Source, unit: cells/µL):

    • ANC ≥ 500: Normal (Green)
    • 100 ≤ ANC < 500: Severe Neutropenia (Orange)
    • ANC < 100: Profound Neutropenia (Red)
  2. MASCC Risk Index: Users & providers together can fill out a survey for the MASCC Risk Index, a validated clinical survey for whether a patient is at high risk for febrile neutropenia-related complications. The patient will receive a warning to seek immediate medical attention if they are at high risk, or will be notified to continue monitoring their symptoms if they are at low risk.

  3. Symptoms Warnings: When a users fills out the symptoms form, they will be prompted to rate their symptoms on a scale of 1-10. If they rate a symptom between 4-6, they will receive a warning regarding a moderate severity symptom; if 7+, they will receive a warning regarding a high severity symptom. Note: These thresholds were arbitrarily determined and can be modified as seen fit.

User Instructions

  1. Setup: Use TestFlight to download NeutroFeverGuard. Following the instructions when onboarding: sign the consent form, give permissions to health data and notification, sign up and provide your data.
  2. Connect to Sensor: If you have a CORE Sensor, make sure your sensor and Bluetooth are on, go to Connect tab and our app will automatically connect, read and save your body temperature data through the CORE Sensor. If you don't have this sensor, this page will suggest you add your data manually.
  3. Dashboard: Visualize your heart rate, body temperature, oxygen saturation, and absolute neutrophil count trends. The data syncs with the Health app, including readings from Bluetooth sensors and manual entries. Click on each scatter plot data to see a summary of what day it was recorded and what the average, minimum, and maximum values for that measurement that day was. Note that the Apple Watch doesn’t measure absolute body temperature continuously, only nightly wrist temperature, which isn’t supported. For body temperature, you can use the CORE sensor or other sensors/apps that push body temperature data to Apple Health app.
  4. Add Data: Manually log health metrics, including temperature, heart rate, oxygen saturation, and blood pressure — these will also sync to the Health app. You can record lab results for neutropenia-related tests, track medication intake with timestamps, log symptoms like nausea or fatigue, and take MASCC Risk Index survey.
  5. Records: View past entries in two tabs — Lab Results and Medications. The Lab Results tab shows your latest Absolute Neutrophil Count (ANC) and provides a detailed history where you can view and delete records. In the Medications tab, you can view, edit, or delete your medication logs.

Enjoy!

Future Improvements

  • Manual data entry validation: While our manual data entry feature warns users against entering invalid values (e.g., negative blood pressure), it still accepts unrealistic values (e.g., heart rate of 300 bpm). This validation should be improved in future iterations, and SpeziValidation can be used.
  • Real-Time data issues with HealthKit when the App is not in the foreground: As discussed with the Apple Health Research Team, retrieving real-time data from HealthKit while the app is in the background is inconsistent, which is a known issue on their end. Currently, the app receives near-real-time updates even if it is not in the foreground, with HealthKit pushing data approximately once per hour. To enable truly real-time fever monitoring when the app is not in the foreground, the system could query locally stored Bluetooth data instead of relying on HealthKit observer queries.

Contributing

Contributions to this project are welcome. Please make sure to read the contribution guidelines and the contributor covenant code of conduct first.

Team and Contributions

Please see team and contribution details for more information.

License

This project is licensed under the MIT License. See Licenses for more information.

Spezi Footer Spezi Footer