Meta veri gereksinimleri

Bu kılavuz, Health Connect 1.2.0-alpha05 veya sonraki sürümlerle uyumludur.

1.1.0-alpha12 veya sonraki bir sürüme yükselten geliştiriciler için Health Connect'teki meta verilerde değişiklikler yapıldı.

Kütüphane bilgileri

Google Maven Android Gradle eklentisi yapı kimliği, yükseltmeniz gereken Health Connect kitaplığını tanımlar. Bu Health Connect SDK'sı bağımlılığını modül düzeyindeki build.gradle dosyanıza ekleyin:

dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}

Meta veri değişiklikleri

Ekosistemde başka faydalı meta verilerin de bulunduğunu doğrulamaya yardımcı olmak için 1.1.0-alpha12 sürümünden itibaren Health Connect Jetpack SDK'sında iki meta veri değişikliği yapıldı. Record oluşturucunuza metadata dahil edilmezse Oluşturucu dahili hatası görebilirsiniz.

Kayıt yöntemini belirtme

Bir Record() türü nesne örneklendirildiğinde meta veri ayrıntılarını belirtmeniz gerekir.

Health Connect'e veri yazarken Metadata örneğini oluşturmak için ilgili fabrika yöntemlerinden birini kullanarak dört kayıt yönteminden birini belirtmeniz gerekir:

Kayıt yöntemi Açıklama
RECORDING_METHOD_UNKNOWN Kayıt yöntemi doğrulanamıyor.
RECORDING_METHOD_MANUAL_ENTRY Kullanıcı verileri girdi.
RECORDING_METHOD_AUTOMATICALLY_RECORDED Veriler bir cihaz veya sensör tarafından kaydedilmiştir.
RECORDING_METHOD_ACTIVELY_RECORDED Kullanıcı, bir cihazda kayıt oturumunun başlatılmasını veya sonlandırılmasını tetikledi.

Örneğin:

 StepsRecord(
    startTime = Instant.ofEpochMilli(1234L),
    startZoneOffset = null,
    endTime = Instant.ofEpochMilli(1236L),
    endZoneOffset = null,
    metadata = Metadata.activelyRecorded(device = Device(type = Device.TYPE_WATCH)),
    count = 10
)

Cihaz türü

Otomatik ve etkin bir şekilde kaydedilen tüm veriler için cihaz türü belirtmeniz gerekir. Daha fazla bilgi için Jetpack belgelerindeki Device sınıfına bakın. Mevcut cihaz türleri şunlardır:

Cihaz türü Açıklama
TYPE_UNKNOWN Cihaz türü bilinmiyor.
TYPE_WATCH Cihaz türü saat.
TYPE_PHONE Cihaz türü telefon.
TYPE_SCALE Cihaz türü tartıdır.
TYPE_RING Cihaz türü yüzüktür.
TYPE_HEAD_MOUNTED Cihaz türü, başa takılan cihazdır.
TYPE_FITNESS_BAND Cihaz türü fitness bandıdır.
TYPE_CHEST_STRAP Cihaz türü göğüs kemeridir.
TYPE_SMART_DISPLAY Cihaz türü akıllı ekrandır.

Bazı Device.type değerleri yalnızca Health Connect'in sonraki sürümlerinde kullanılabilir. Genişletilmiş cihaz türleri özelliği kullanılamadığında bu türler Device.TYPE_UNKNOWN olarak kabul edilir.

Genişletilmiş cihaz türleri Açıklama
TYPE_CONSUMER_MEDICAL_DEVICE Cihaz türü tıbbi cihazdır.
TYPE_GLASSES Cihaz türü, akıllı gözlük veya gözlüktür.
TYPE_HEARABLE Cihaz türü, işitilebilir cihazdır.
TYPE_FITNESS_MACHINE Cihaz türü sabit bir makinedir.
TYPE_FITNESS_EQUIPMENT Cihaz türü, fitness ekipmanıdır.
TYPE_PORTABLE_COMPUTER Cihaz türü taşınabilir bilgisayardır.
TYPE_METER Cihaz türü, ölçüm cihazıdır.
Bir kullanıcının cihazının Health Connect'te genişletilmiş cihaz türlerini destekleyip desteklemediğini belirlemek için istemcide FEATURE_EXTENDED_DEVICE_TYPES özelliğinin kullanılabilirliğini kontrol edin:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}
Daha fazla bilgi edinmek için Özellik kullanılabilirliğini kontrol etme bölümünü inceleyin.

Örneğin:

 val WATCH_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel Watch",
    type = Device.TYPE_WATCH
)

// Phone
 val PHONE_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel 8",
    type = Device.TYPE_PHONE
)

// Ring
 val RING_DEVICE = Device(
    manufacturer = "Oura",
    model = "Ring Gen3",
    type = Device.TYPE_RING
)

// Scale
 val SCALE_DEVICE = Device(
    manufacturer = "Withings",
    model = "Body Comp",
    type = Device.TYPE_SCALE
)

Benzersiz Cihaz Tanımlayıcısı (UDI)

Android 17 (API düzeyi 37.1) veya U uzantısı 23 ya da sonraki sürümlerdeki Health Connect için Device sınıfı, Benzersiz Cihaz Tanımlayıcı (UDI) desteği içerir. Tıbbi cihazın kayıtlı UDI model ayrıntılarını yazılı kayıtlarınızla ilişkilendirmek, alt uygulamaların (ör. uzaktan sağlık hizmeti platformları veya klinik portalları) klinik düzeydeki ölçümleri tanımlamasına ve bunları genel tüketici giyilebilir cihaz verilerinden ayırt etmesine olanak tanır.

İzni beyan etme

UDI ayrıntılarını Health Connect'e yazmak için uygulamanızın AndroidManifest.xml dosyasında WRITE_DEVICE_UDI iznini beyan etmeniz gerekir:

<uses-permission android:name="android.permission.health.WRITE_DEVICE_UDI" />

WRITE_DEVICE_UDI izninin normal bir izin olduğunu unutmayın. Bu izni manifest dosyanızda beyan etmeniz gerekir ancak çalışma zamanında kullanıcıdan istemeniz gerekmez. Yükleme sırasında uygulamanıza otomatik olarak verilir.

Yalnızca Cihaz Tanımlayıcı (DI) kısmını yazın.

Eksiksiz bir UDI iki bölümden oluşur:

  • Cihaz Tanımlayıcısı (UDI-DI): Bir yetkili kurum (ör. GS1) tarafından belirli bir cihaz modeline atanan, dünya genelinde tanınan bir tanımlayıcı.
  • Üretim Tanımlayıcısı (UDI-PI): Seri numaraları, parti numaraları, üretim tarihleri veya son kullanma tarihleri gibi birime özgü özellikler.

Kullanıcı gizliliğini korumak için Health Connect'te kodun yalnızca UDI-DI kısmını doldurun. Üretim tanımlayıcı özellikleri (ör. seri numaraları veya parti numaraları) eklemeyin.

Kod örneği

Not: UDI'yi bir Device örneği oluştururken ayarlayabilirsiniz.

Jetpack SDK'sı

val device = Device(
    type = Device.TYPE_CONSUMER_MEDICAL_DEVICE,
    manufacturer = "Omron",
    model = "HEM-7121",
    udi = "04015674011832" // Device Identifier (UDI-DI) portion only
)

Platform API

val device = Device.Builder()
    .setType(Device.DEVICE_TYPE_CONSUMER_MEDICAL_DEVICE)
    .setManufacturer("Omron")
    .setModel("HEM-7121")
    .setUdi("04015674011832") // Device Identifier (UDI-DI) portion only
    .build()

WRITE_DEVICE_UDI iznini beyan etmeden UDI ile veri yazarsanız Health Connect, yazma sırasında SecurityException hatası verir.

Cihaz onayını doğrulamak için UDI kullanma

Health Connect, taşıma katmanı olarak görev yapar ve UDI'nin gerçekliğini veya kayıt durumunu doğrulamaz.

Veri okuyucular için UDI'nin varlığı, verilerin kayıtlı bir tıbbi cihazdan geldiğini gösterir. Okuma uygulamaları; cihaz sınıflandırmalarını, yasal izin durumunu (ör. Sınıf I, II veya III) ya da belirli kullanım amacını doğrulamak için FDA'nın Global Unique Device Identification Database (GUDID) veya AB'nin EUDAMED gibi yasal düzenleme veritabanlarını sorgulamalıdır.

Snippet'ler güncellendi

Health Connect kılavuzları, yeni meta veri şartlarına uymak için yeni snippet'lerin gerektiği her yerde güncellendi. Bazı örnekler için Veri Yazma sayfasına bakın.

Yeni meta veri yöntemleri

Meta veriler artık doğrudan örneklendirilemediğinden yeni bir meta veri örneği almak için fabrika yöntemlerinden birini kullanın. Fabrika yöntemleri, verileri kaydetmek için bir cihaz veya sensör kullanıldığında cihaz bilgilerinin sağlandığını doğrular. Manuel olarak girilen veriler için cihaz bilgilerinin sağlanması isteğe bağlıdır. Her işlevin üç imza varyantı vardır:

  • activelyRecorded

    • fun activelyRecorded(device: Device): Metadata.
    • fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun activelyRecordedWithId(id: String, device: Device): Metadata
  • autoRecorded

    • fun autoRecorded(device: Device): Metadata
    • fun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun autoRecordedWithId(id: String, device: Device): Metadata
  • manualEntry

    • fun manualEntry(device: Device? = null): Metadata
    • fun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun manualEntryWithId(id: String, device: Device? = null): Metadata
  • unknownRecordingMethod

    • fun unknownRecordingMethod(device: Device? = null): Metadata
    • fun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata

Daha fazla bilgi için Android Açık Kaynak Projesi'ne bakın.

Test verileri

Beklenen meta veri değerlerini taklit etmek için Testing Library ve MetadataTestHelper'yi kullanın:

private val TEST_METADATA =
    Metadata.unknownRecordingMethod(
        clientRecordId = "clientId",
        clientRecordVersion = 1L,
        device = Device(type = Device.TYPE_UNKNOWN),
    ).populatedWithTestValues(id = "test")

Bu, kayıt ekleme sırasında bu değerleri otomatik olarak dolduran Health Connect uygulamasının davranışını simüle eder.

Test kitaplığı için bu Health Connect SDK'sı bağımlılığını modül düzeyindeki build.gradle dosyanıza eklemeniz gerekir:

dependencies {
  testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}

Kitaplığı yeni sürüme geçirme

Uygulamanız gereken ana adımlar şunlardır:

  1. Kitaplığınızı 1.1.0-alpha12 sürümüne yükseltin.

  2. Kitaplık oluşturulurken yeni meta verilerin gerektiği yerlerde derleme hataları gösterilir. Bu hataları düzeltmek ve taşıma işlemini tamamlamak için aşağıdaki değişiklikleri yaptığınızdan emin olun:

    • Record oluştururken kayıt yöntemi belirtmek zorunludur. Bu işlem, Metadata içinde sağlanan fabrika yöntemlerinden biri (ör. Metadata.manualEntry() veya Metadata.activelyRecorded(device = Device(...))) kullanılarak yapılır.
    • Bir cihaz tarafından kaydedilen veriler için Device.TYPE_WATCH veya Device.TYPE_PHONE gibi bir cihaz türü belirtmek zorunludur.
  3. Uygulamanız genişletilmiş cihaz türlerini yazıyorsa özelliğin kullanılamadığı cihazlarda beklenmedik TYPE_UNKNOWN hatalarını önlemek için bunları FEATURE_EXTENTED_DEVICE_TYPES ile engelleyin.