Реалізація AI-моніторингу здоров'я за даними датчиків у мобільному застосунку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація AI-моніторингу здоров'я за даними датчиків у мобільному застосунку
Складний
~2-4 тижні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

AI-Моніторинг здоров'я по даних датчиків мобільного додатку

Apple Watch передає 30 вимірювань пульсу в хвилину. Fitbit надає SpO2 кожні 5 секунд. Смисл не в збіранні цих цифр—смисл у тому, щоб модель сказала "щось не так" раніше, ніж це почувається користувачем.

Джерела даних датчиків

iOS: HealthKit

HealthKit—єдиний правильний спосіб отримувати дані здоров'я на iOS. Прямі запити до датчиків без HealthKit порушують гайдлайни App Store.

import HealthKit

class HealthDataCollector {
    private let healthStore = HKHealthStore()

    func requestAuthorization() async throws {
        let types: Set<HKQuantityType> = [
            HKQuantityType(.heartRate),
            HKQuantityType(.oxygenSaturation),
            HKQuantityType(.stepCount),
            HKQuantityType(.heartRateVariabilitySDNN),
            HKQuantityType(.restingHeartRate)
        ]
        try await healthStore.requestAuthorization(toShare: [], read: types)
    }

    func observeHeartRate(handler: @escaping (Double) -> Void) {
        let heartRateType = HKQuantityType(.heartRate)
        let query = HKAnchoredObjectQuery(
            type: heartRateType,
            predicate: nil,
            anchor: nil,
            limit: HKObjectQueryNoLimit
        ) { _, samples, _, _, _ in
            guard let samples = samples as? [HKQuantitySample] else { return }
            samples.forEach { sample in
                let bpm = sample.quantity.doubleValue(
                    for: HKUnit(from: "count/min")
                )
                handler(bpm)
            }
        }
        query.updateHandler = { _, samples, _, _, _ in
            guard let samples = samples as? [HKQuantitySample] else { return }
            samples.forEach { sample in
                handler(sample.quantity.doubleValue(for: HKUnit(from: "count/min")))
            }
        }
        healthStore.execute(query)
    }
}

HKAnchoredObjectQuery—правильний вибір для real-time спостереження. Стандартна HKSampleQuery робить снимок і не оновлюється.

Android: Health Connect + прямі датчики

Health Connect (API 26+)—аналог HealthKit для Android. Агрегує дані від Galaxy Health, Fitbit, Garmin. Прямий доступ до датчиків через SensorManager:

class SensorCollector(private val context: Context) : SensorEventListener {
    private val sensorManager = context.getSystemService(SensorManager::class.java)
    private val heartRateSensor = sensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE)

    fun startMonitoring() {
        sensorManager.registerListener(
            this,
            heartRateSensor,
            SensorManager.SENSOR_DELAY_NORMAL
        )
    }

    override fun onSensorChanged(event: SensorEvent) {
        if (event.sensor.type == Sensor.TYPE_HEART_RATE) {
            val bpm = event.values[0]
            val accuracy = event.accuracy  // SENSOR_STATUS_ACCURACY_HIGH необхідна
            if (accuracy >= SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM) {
                processHeartRate(bpm)
            }
        }
    }
}

Перевірка accuracy—обов'язкова. SENSOR_STATUS_UNRELIABLE (0) дає артефакти: пульс 255 bpm на мокрому датчику.

AI-аналіз: детекція аномалій

Задача—виявити відхилення від персональної норми. Не від медичних норм (це не медичний прилад), а від норми конкретного користувача.

Isolation Forest—хорошо працює для багатомірних часових рядів з малим набором фич. Тренуйте на "нормальній" поведінці 2–4 тижні, виявіть выбросы. Конвертується в CoreML через coremltools.converters.sklearn.

Скользящие статистики + z-score—простіше, інтерпретуємо, без ML:

func detectAnomaly(currentHR: Double, history: [Double]) -> AnomalyLevel {
    let mean = history.reduce(0, +) / Double(history.count)
    let variance = history.map { pow($0 - mean, 2) }.reduce(0, +) / Double(history.count)
    let stdDev = sqrt(variance)
    let zScore = abs(currentHR - mean) / stdDev

    switch zScore {
    case 0..<2.0: return .normal
    case 2.0..<3.0: return .elevated
    default: return .alert
    }
}

z-score > 3—статистично значима аномалія. Але потрібен контекст: пульс 160 bpm після WorkoutStart у HealthKit—норма, той же пульс у спокої—аномалія. Контекст активності через CMMotionActivityManager (iOS) або ActivityRecognitionClient (Android).

Персоналізовані рекомендації

На основі агрегованих паттернів (HRV, пульс у спокої, кроки, якість сну) будуйте систему рекомендацій. Не "займайтесь спортом"—"у вас HRV знизився на 18% за 3 дні, що зазвичай корелює з недосипом—сьогодні рекомендується легка тренування".

Реалізуйте як rule-based систему поверх ML-аналітики: ML виявляє паттерн, правила перетворюють його на конкретне повідомлення. Простіше тестувати та регулювати, ніж "чорну скриню".

Приватність та регуляторика

Дані здоров'я—sensitive. GDPR та Apple Review вимагають явної згоди для кожного типу даних. Зберігання на сервері повинно бути зашифрованим (AES-256 at rest, TLS 1.3 in transit).

Якщо додаток позиціонується як медичний (діагностика, лікування)—потрібна FDA 510(k) clearance (США) або CE marking (EU). Wellness-додатки без медичних claims—ця регуляторика не застосовується, але маркетинг повинен це враховувати.

Процес розробки

Проектування data pipeline: джерела → нормалізація → зберігання. Розробка ML-моделі детекції аномалій, обучение та валідація. Конвертація в CoreML/TFLite. Інтеграція з HealthKit / Health Connect. UI-компоненти: дашборд здоров'я, алерти, рекомендації. Тестування на реальних носимих пристроях.

Орієнтири за часом

Базовий моніторинг з z-score детекцією та дашбордом—2–3 тижні. Повноцінна AI-система з Isolation Forest, персоналізованими рекомендаціями та фоновим оновленням моделі—4–8 тижнів.