Wearable Health Data Pipeline

System ↔ System

Wearable device sync through normalization, metrics, trends, and reporting.

6 nodes · 5 edgesfitness
eventsystemapidb
Visual
Wearable Sync Eventevent

BLE sync from smartwatch uploads heart rate, steps, sleep, and SpO2 data.

sequentialData Normalization
Data Normalizationsystem

Convert vendor-specific formats to FHIR Observation resources.

sequentialHealth Metric Calculation
Health Metric Calculationsystem

Compute resting HR, HRV, VO2max estimate, sleep score, and recovery index.

sequentialTrend Analysis
Trend Analysissystem

7-day and 30-day rolling averages, detect significant changes.

sequentialCoach Dashboard Update
conditionalWeekly Report Generation
Coach Dashboard Updatedb

Write athlete metrics to coaching platform database.

Weekly Report Generationapi

Generate and email PDF summary with charts to user.

uc-wearable-data-pipeline.osop.yaml
osop_version: "1.0"
id: "wearable-data-pipeline"
name: "Wearable Health Data Pipeline"
description: "Wearable device sync through normalization, metrics, trends, and reporting."

nodes:
  - id: "wearable_sync"
    type: "event"
    name: "Wearable Sync Event"
    description: "BLE sync from smartwatch uploads heart rate, steps, sleep, and SpO2 data."

  - id: "data_normalize"
    type: "system"
    name: "Data Normalization"
    description: "Convert vendor-specific formats to FHIR Observation resources."

  - id: "metric_calc"
    type: "system"
    name: "Health Metric Calculation"
    description: "Compute resting HR, HRV, VO2max estimate, sleep score, and recovery index."

  - id: "trend_analysis"
    type: "system"
    name: "Trend Analysis"
    description: "7-day and 30-day rolling averages, detect significant changes."

  - id: "coach_dashboard"
    type: "db"
    name: "Coach Dashboard Update"
    description: "Write athlete metrics to coaching platform database."

  - id: "weekly_report"
    type: "api"
    name: "Weekly Report Generation"
    description: "Generate and email PDF summary with charts to user."
    timeout_sec: 60

edges:
  - from: "wearable_sync"
    to: "data_normalize"
    mode: "sequential"
  - from: "data_normalize"
    to: "metric_calc"
    mode: "sequential"
  - from: "metric_calc"
    to: "trend_analysis"
    mode: "sequential"
  - from: "trend_analysis"
    to: "coach_dashboard"
    mode: "sequential"
  - from: "trend_analysis"
    to: "weekly_report"
    mode: "conditional"
    when: "day_of_week == 'monday'"