AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

FHIR में वियरेबल डेटा (Apple Health, Health Connect)

स्मार्टवॉच, रिंग और स्केल डेटा को FHIR रिकॉर्ड में प्राप्त करें: कौन से डिवाइस किस स्वास्थ्य स्टोर तक पहुंचते हैं, एक LOINC मैपिंग टेबल, दैनिक सारांश और एक परीक्षित अपसेट।

स्मार्टवॉच, रिंग या स्मार्ट स्केल से डेटा को मेडिकल रिकॉर्ड में प्राप्त करने के लिए, इसे ऑपरेटिंग सिस्टम के स्वास्थ्य स्टोर से फोन पर पढ़ें — iOS पर Apple Health, Android पर Health Connect — इसे प्रति दिन सारांशित करें, प्रत्येक मीट्रिक को एक LOINC कोड और एक UCUM यूनिट पर मैप करें, और इसे डिवाइस डेटा के रूप में चिह्नित FHIR R4 Observations के रूप में लिखें। प्रत्येक विक्रेता के क्लाउड से पढ़ने के बजाय फोन के स्वास्थ्य स्टोर से पढ़ने से एकीकरण Apple Watch, Galaxy Watch, Pixel Watch, Garmin, Fitbit, Oura और Withings को कवर कर सकता है, जब तक कि व्यक्ति ने अपने विक्रेता ऐप को साझा करने की अनुमति दी हो। यह पृष्ठ डेटा पथ, एक मैपिंग टेबल जिसे आप पुन: उपयोग कर सकते हैं, एक मान्य FHIR उदाहरण और प्लेटफ़ॉर्म के विरुद्ध चलाए गए कोड को देता है।

डेटा पाथ

 watch, ring, scale ──► vendor app (Garmin Connect, Fitbit, Oura, Withings, Samsung Health…)
                              │  shares, with the person's permission
                              ▼
                 Apple Health (iOS)  /  Health Connect (Android)
                              │  your app reads, with the person's permission, on the phone
                              ▼
                 your app ──► your backend ──► FHIR R4 Observations in the person's record

न तो Apple Health और न ही Health Connect के पास सर्वर API है: डेटा केवल व्यक्ति के फ़ोन पर किसी ऐप द्वारा पढ़ा जा सकता है। आपका ऐप इसे पढ़ता है, आपके बैकएंड को कॉम्पैक्ट दैनिक मान भेजता है, और बैकएंड उन्हें रिकॉर्ड में लिखता है।

कौन से डिवाइस किस हेल्थ स्टोर तक पहुँचते हैं

प्रत्येक विक्रेता क्या साझा करता है, यह ऐप संस्करणों के साथ बदलता रहता है; विक्रेता का अपना दस्तावेज़ीकरण ही संदर्भ है।

डिवाइस या ऐप Apple Health (iOS) Health Connect (Android) नोट्स
Apple Watch हाँ, मूल रूप से — घड़ी जो कुछ भी मापती है वह Apple Health में जाता है
Samsung Galaxy Watch, Samsung Health — आंशिक रूप से Samsung Health तय करता है कि वह कौन से प्रकार निर्यात करता है और कितनी बार; Samsung Health देखें
Pixel Watch, Fitbit कोई आधिकारिक सिंक नहीं हाँ, Fitbit ऐप के माध्यम से (Google सहायता)
Garmin हाँ, प्रत्येक डिवाइस सिंक के बाद Garmin Connect से हाँ, Garmin Connect Android 14 और उसके बाद के संस्करणों पर Health Connect का समर्थन करता है (Android Developers, August 2025) Garmin-विशिष्ट स्कोर जैसे Body Battery साझा नहीं किए जाते हैं
Oura हाँ हाँ (Oura) Readiness और अन्य Oura स्कोर Oura ऐप में रहते हैं
Withings हाँ, Health Mate के माध्यम से हाँ (Android Developers blog) स्केल, रक्तचाप मॉनिटर, घड़ियाँ

दो व्यावहारिक परिणाम। पहला, आपका ऐप इस बात पर निर्भर करता है कि व्यक्ति ने अपने विक्रेता ऐप में साझाकरण चालू किया है या नहीं; ऑनबोर्डिंग में ऐसा कहना चाहिए। दूसरा, हेल्थ स्टोर में दो स्रोतों (एक फोन और एक घड़ी) से समान चरण हो सकते हैं; नमूनों को जोड़ने के बजाय स्टोर के अपने दैनिक कुल को पढ़ें, क्योंकि Apple Health और Health Connect पहले से ही ओवरलैपिंग स्रोतों को डी-डुप्लिकेट करते हैं।

मैपिंग तालिका: स्वास्थ्य स्टोर प्रकार → FHIR Observation

एनफेरोस डेली (Anpheros Daily) द्वारा वियरेबल डेटा को FHIR रिकॉर्ड में लिखते समय उपयोग किए जाने वाले कोड:

मेट्रिक Apple HealthKit Health Connect LOINC UCUM यूनिट श्रेणी
हृदय गति heartRate HeartRateRecord 8867-4 /min vital-signs
आराम की हृदय गति restingHeartRate RestingHeartRateRecord 40443-4 /min vital-signs
हृदय गति परिवर्तनशीलता heartRateVariabilitySDNN HeartRateVariabilityRmssdRecord 80404-7 (केवल SDNN) ms vital-signs
रक्त ऑक्सीजन (SpO₂) oxygenSaturation OxygenSaturationRecord 59408-5 % vital-signs
श्वसन दर respiratoryRate RespiratoryRateRecord 9279-1 /min vital-signs
प्रति दिन कदम stepCount StepsRecord 41950-7 {steps} activity
सक्रिय ऊर्जा activeEnergyBurned ActiveCaloriesBurnedRecord 41981-2 kcal activity
नींद की अवधि sleepAnalysis (श्रेणी) SleepSessionRecord 93832-4; चरण 93831-6 डीप, 93830-8 लाइट, 93829-0 REM min activity
शरीर का वजन bodyMass WeightRecord 29463-7 kg vital-signs
रक्तचाप bloodPressure (सहसंबंध) BloodPressureRecord 85354-9 के साथ 8480-6 और 8462-4 mm[Hg] vital-signs
रक्त शर्करा (मीटर) bloodGlucose BloodGlucoseRecord 2339-0 mg/dL vital-signs
शरीर का तापमान bodyTemperature BodyTemperatureRecord 8310-5 Cel vital-signs

हृदय गति परिवर्तनशीलता पंक्ति पर ध्यान दें: Apple Health SDNN स्टोर करता है, Health Connect RMSSD स्टोर करता है। ये अलग-अलग आँकड़े हैं और इन्हें एक ही कोड के तहत नहीं लिखा जाना चाहिए। LOINC 80404-7 SDNN है; RMSSD के लिए, एनफेरोस डेली (Anpheros Daily) अपने स्वयं के कोड सिस्टम का उपयोग करता है बजाय इसके कि यह दिखावा करे कि दोनों एक ही हैं।

सारांश, हर नमूना नहीं

एक घड़ी दिन में हजारों हृदय गति के नमूने उत्पन्न करती है। एक मेडिकल रिकॉर्ड को ऐसी चीज़ की आवश्यकता होती है जिसे कोई व्यक्ति या डॉक्टर पढ़ सके:

FHIR R4 के रूप में एक दैनिक हृदय गति सारांश (यह FHIR R4 वैलिडेटर से गुजरता है):

{
  "resourceType": "Observation",
  "status": "final",
  "identifier": [{"system": "https://your-app.test/fhir/sid/daily-wearable", "value": "p-123:2026-10-01:heart_rate"}],
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
  "code": {"coding": [{"system": "http://loinc.org", "code": "8867-4", "display": "Heart rate"}]},
  "subject": {"reference": "Patient/p-123"},
  "effectivePeriod": {"start": "2026-10-01T00:00:00-04:00", "end": "2026-10-02T00:00:00-04:00"},
  "valueQuantity": {"value": 71.4, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"},
  "component": [
    {"code": {"text": "minimum"}, "valueQuantity": {"value": 52, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"}},
    {"code": {"text": "maximum"}, "valueQuantity": {"value": 138, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"}}
  ],
  "device": {"display": "Apple Watch (via Apple Health)"}
}

डुप्लिकेट के बिना दैनिक मान लिखना

फ़ोन दिन में कई बार सिंक होते हैं, और दिन का अंतिम मान आधी रात तक बदलता रहता है। प्रत्येक Observation को एक स्थिर पहचानकर्ता दें — व्यक्ति, दिन, मीट्रिक — और नया बनाने के बजाय उसे अपडेट करें। Anpheros TypeScript SDK के साथ, अपने बैकएंड पर:

import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });

// What the phone sends: one value per metric per local day
type DailyValue = { metric: 'heart_rate' | 'steps'; day: string; value: number; min?: number; max?: number };

const CODES = {
  heart_rate: { code: '8867-4', display: 'Heart rate', unit: '/min', category: 'vital-signs' },
  steps: { code: '41950-7', display: 'Number of steps in 24 hour Measured', unit: '{steps}', category: 'activity' },
} as const;

// One Observation per person, metric and day: re-sending a day updates it instead of adding a copy.
async function upsertDaily(patientId: string, v: DailyValue, source: string) {
  const c = CODES[v.metric];
  const identifier = { system: 'https://your-app.test/fhir/sid/daily-wearable', value: `${patientId}:${v.day}:${v.metric}` };
  const resource: any = {
    resourceType: 'Observation', status: 'final',
    identifier: [identifier],
    category: [{ coding: [{ system: 'http://terminology.hl7.org/CodeSystem/observation-category', code: c.category }] }],
    code: { coding: [{ system: 'http://loinc.org', code: c.code, display: c.display }] },
    subject: { reference: `Patient/${patientId}` },
    effectivePeriod: { start: `${v.day}T00:00:00Z`, end: `${v.day}T23:59:59Z` },
    valueQuantity: { value: v.value, unit: c.unit, system: 'http://unitsofmeasure.org', code: c.unit },
  };
  if (v.min !== undefined && v.max !== undefined) {
    resource.component = [
      { code: { text: 'minimum' }, valueQuantity: { value: v.min, unit: c.unit, system: 'http://unitsofmeasure.org', code: c.unit } },
      { code: { text: 'maximum' }, valueQuantity: { value: v.max, unit: c.unit, system: 'http://unitsofmeasure.org', code: c.unit } },
    ];
  }
  const found = await anpheros.fhir.search('Observation', { identifier: `${identifier.system}|${identifier.value}` });
  const existing = found.entry?.[0]?.resource;
  return existing
    ? anpheros.fhir.update({ ...resource, id: existing.id }, { author_type: 'device' })
    : anpheros.fhir.create(resource, { author_type: 'device', source_system: source });
}

सैंडबॉक्स कुंजी के साथ प्लेटफ़ॉर्म के स्थानीय इंस्टेंस के विरुद्ध चलाएं, दो दैनिक मानों के बाद उसी दिन के चरणों का बाद में सिंक हुआ, दो Observations रह गए, चरण वाला संस्करण 2 पर नए मान के साथ, और प्रोवेनेंस v1 device apple-health · v2 device। इतिहास पहले वाले मान को रखता है, और हर पाठक देख सकता है कि डेटा किसी डिवाइस से आया है, किसी चिकित्सक से नहीं।

उत्पादन में, व्यक्ति के टाइम ज़ोन में वास्तविक दिन की सीमाओं का उपयोग करें (उपरोक्त उदाहरण संक्षिप्तता के लिए UTC का उपयोग करता है), जैसा कि प्लेटफ़ॉर्म पृष्ठों पर HealthKit और Health Connect कोड करता है।

फ़ोन पर पढ़ना

अनुसरण करने योग्य नियम

Anpheros क्या करता है और क्या नहीं करता है

Anpheros Platform स्वयं Apple Health, Health Connect या किसी भी विक्रेता क्लाउड से कनेक्ट नहीं होता है: आपका ऐप फोन पर डेटा पढ़ता है और API के माध्यम से उसे लिखता है। Anpheros का अपना ऐप, Anpheros Daily, ठीक यही करता है: यह iPhone पर Apple Health और Android पर Health Connect पढ़ता है, दैनिक सारांश रखता है और उन्हें उपरोक्त कोड के साथ व्यक्ति के FHIR रिकॉर्ड में लिखता है। डिवाइस कनेक्ट करना इसके Plus और Max प्लान का हिस्सा है।

अक्सर पूछे जाने वाले प्रश्न

Apple Watch डेटा को FHIR सर्वर में कैसे प्राप्त करें?

HealthKit के साथ iPhone पर Apple Health से इसे पढ़ें (कोई सर्वर API नहीं है), इसे प्रति दिन सारांशित करें, और अपने बैकएंड को प्रत्येक मीट्रिक को LOINC कोड और UCUM यूनिट के साथ एक Observation के रूप में लिखें, जिसे डिवाइस डेटा के रूप में चिह्नित किया गया हो।

क्या Health Connect या Apple Health के लिए कोई क्लाउड API है?

नहीं। दोनों डेटा को फोन पर रखते हैं; फोन पर इंस्टॉल किया गया एक ऐप व्यक्ति की अनुमति से इसे पढ़ता है। Garmin, Fitbit या Oura जैसे विक्रेता क्लाउड के अपने API हैं, लेकिन फोन के हेल्थ स्टोर को पढ़ना एकीकरण के साथ उनमें से अधिकांश को कवर करता है।

चरणों के लिए मुझे कौन सा LOINC कोड उपयोग करना चाहिए?

41950-7, "Number of steps in 24 hour Measured", दैनिक effectivePeriod के साथ। हृदय गति के लिए 8867-4, SpO₂ के लिए 59408-5, नींद की अवधि के लिए 93832-4 का उपयोग करें।

क्या मुझे हर हृदय-गति नमूने को FHIR में संग्रहीत करना चाहिए?

आमतौर पर नहीं। औसत, न्यूनतम और अधिकतम के साथ एक दैनिक सारांश वह है जिसे एक व्यक्ति या चिकित्सक पढ़ता है; व्यक्तिगत रीडिंग केवल तभी रिकॉर्ड में आती हैं जब वे अपने आप में महत्वपूर्ण होती हैं, जैसे कि अनियमित लय की घटना।

क्या मैं Apple Health और Health Connect से HRV के लिए एक कोड का उपयोग कर सकता हूँ?

नहीं। Apple Health SDNN रिपोर्ट करता है और Health Connect RMSSD रिपोर्ट करता है; वे विभिन्न चीजों को मापते हैं और विभिन्न कोड की आवश्यकता होती है।

संबंधित

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy