यह गाइड, Health Connect के 1.1.0-beta02 वर्शन के साथ काम करती है.
Health Connect में मेडिकल रिकॉर्ड का इस्तेमाल करके मेडिकल डेटा पढ़ने के लिए, यह तरीका अपनाएं:
- देखें कि सुविधा उपलब्ध है या नहीं.
- ईमेल पढ़े जाने की अनुमतियों का अनुरोध करें.
- मेडिकल रिकॉर्ड (
MedicalResource
) को ऐक्सेस कर सकता है. - डेटा सोर्स (
MedicalDataSource
) को पढ़ने की अनुमति.
सुविधा की उपलब्धता
यह पता लगाने के लिए कि किसी व्यक्ति के डिवाइस पर Health Connect में मेडिकल रिकॉर्ड की सुविधा काम करती है या नहीं, क्लाइंट परFEATURE_PERSONAL_HEALTH_RECORD
की उपलब्धता देखें:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_PERSONAL_HEALTH_RECORD
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
ज़्यादा जानने के लिए, सुविधा की उपलब्धता की जांच करना लेख पढ़ें.
ज़रूरी अनुमतियां
मेडिकल डेटा को पढ़ने की अनुमति, यहां दी गई अनुमति से सुरक्षित है:
android.permission.health.READ_MEDICAL_DATA_ALLERGIES_INTOLERANCES
android.permission.health.READ_MEDICAL_DATA_CONDITIONS
android.permission.health.READ_MEDICAL_DATA_LABORATORY_RESULTS
android.permission.health.READ_MEDICAL_DATA_MEDICATIONS
android.permission.health.READ_MEDICAL_DATA_PERSONAL_DETAILS
android.permission.health.READ_MEDICAL_DATA_PRACTITIONER_DETAILS
android.permission.health.READ_MEDICAL_DATA_PREGNANCY
android.permission.health.READ_MEDICAL_DATA_PROCEDURES
android.permission.health.READ_MEDICAL_DATA_SOCIAL_HISTORY
android.permission.health.READ_MEDICAL_DATA_VACCINES
android.permission.health.READ_MEDICAL_DATA_VISITS
android.permission.health.READ_MEDICAL_DATA_VITAL_SIGNS
अपने ऐप्लिकेशन के लिए, Play Console में इन अनुमतियों का एलान करें. साथ ही, अपने ऐप्लिकेशन के मेनिफ़ेस्ट में भी इनका एलान करें:
<application>
<uses-permission
android:name="android.permission.health.READ_MEDICAL_DATA_ALLERGIES_INTOLERANCES" />
<uses-permission
android:name="android.permission.health.READ_MEDICAL_DATA_CONDITIONS" />
...
</application>
आपको अपने डिवाइसों और ऐप्लिकेशन में इस्तेमाल की जाने वाली सभी ज़रूरी अनुमतियों के बारे में बताना होगा. आपको यह भी देखना चाहिए कि हर अनुमति का इस्तेमाल करने से पहले, उपयोगकर्ता ने उसे अनुमति दी हो.
उपयोगकर्ता से अनुमतियों का अनुरोध करना
क्लाइंट इंस्टेंस बनाने के बाद, आपके ऐप्लिकेशन को उपयोगकर्ता से अनुमतियों का अनुरोध करना होगा. उपयोगकर्ताओं को किसी भी समय अनुमतियां देने या अस्वीकार करने की अनुमति होनी चाहिए.
इसके लिए, ज़रूरी डेटा टाइप के लिए अनुमतियों का सेट बनाएं. पक्का करें कि सेट में मौजूद अनुमतियों का एलान, सबसे पहले आपके Android मेनिफ़ेस्ट में किया गया हो.
// Create a set of permissions for required data types
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_ALLERGIES_INTOLERANCES
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_CONDITIONS
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_LABORATORY_RESULTS
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_MEDICATIONS
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_PERSONAL_DETAILS
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_PRACTITIONER_DETAILS
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_PREGNANCY
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_PROCEDURES
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_SOCIAL_HISTORY
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_VACCINES
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_VISITS
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_READ_MEDICAL_DATA_VITAL_SIGNS
val PERMISSIONS =
setOf(
PERMISSION_READ_MEDICAL_DATA_ALLERGIES_INTOLERANCES
PERMISSION_READ_MEDICAL_DATA_CONDITIONS
PERMISSION_READ_MEDICAL_DATA_LABORATORY_RESULTS
PERMISSION_READ_MEDICAL_DATA_MEDICATIONS
PERMISSION_READ_MEDICAL_DATA_PERSONAL_DETAILS
PERMISSION_READ_MEDICAL_DATA_PRACTITIONER_DETAILS
PERMISSION_READ_MEDICAL_DATA_PREGNANCY
PERMISSION_READ_MEDICAL_DATA_PROCEDURES
PERMISSION_READ_MEDICAL_DATA_SOCIAL_HISTORY
PERMISSION_READ_MEDICAL_DATA_VACCINES
PERMISSION_READ_MEDICAL_DATA_VISITS
PERMISSION_READ_MEDICAL_DATA_VITAL_SIGNS
)
getGrantedPermissions
का इस्तेमाल करके देखें कि आपके ऐप्लिकेशन को ज़रूरी अनुमतियां पहले से मिली हुई हैं या नहीं. अगर ऐसा नहीं है, तो उन अनुमतियों का अनुरोध करने के लिए createRequestPermissionResultContract
का इस्तेमाल करें. इससे Health Connect की अनुमतियों वाली स्क्रीन दिखती है.
// Create the permissions launcher
val requestPermissionActivityContract = PermissionController.createRequestPermissionResultContract()
val requestPermissions = registerForActivityResult(requestPermissionActivityContract) { granted ->
if (granted.containsAll(PERMISSIONS)) {
// Permissions successfully granted
} else {
// Lack of required permissions
}
}
suspend fun checkPermissionsAndRun(healthConnectClient: HealthConnectClient) {
val granted = healthConnectClient.permissionController.getGrantedPermissions()
if (granted.containsAll(PERMISSIONS)) {
// Permissions already granted; proceed with inserting or reading data
} else {
requestPermissions.launch(PERMISSIONS)
}
}
उपयोगकर्ता किसी भी समय अनुमतियां दे सकते हैं या उन्हें रद्द कर सकते हैं. इसलिए, आपके ऐप्लिकेशन को समय-समय पर यह जांच करनी चाहिए कि कौनसी अनुमतियां दी गई हैं. साथ ही, उन स्थितियों को मैनेज करना चाहिए जिनमें अनुमति नहीं दी गई है.
स्वास्थ्य से जुड़ी जानकारी देने वाले संसाधन
आपके पास उपयोगकर्ता के लिए Health Connect में सेव किया गया कोई भी मेडिकल रिसोर्स (MedicalResource
) पढ़ने का विकल्प होता है. इसमें वे रिसोर्स भी शामिल हैं जिन्हें अन्य ऐप्लिकेशन ने जोड़ा है.
MedicalResource रिकॉर्ड पाना
medicalResourceType
तय करके, किसी 'पाएं' अनुरोध को फ़िल्टर करें. पक्का करें कि आपने पेज वाले अनुरोधों का इस्तेमाल किया हो. साथ ही, दर की सीमा का ध्यान रखें.
// Read `MedicalResource`s back from the `MedicalDataSource`
// Read 100 resources / page. See `pageSize` doc for defaults and limits.
val pageSize = 100
// Prepare the initial read request.
// All `MedicalResource`s in the given `MedicalDataSource`s and of given `medicalResourceType`
// will be retrieved.
val initialRequest: ReadMedicalResourcesRequest =
ReadMedicalResourcesInitialRequest(
MEDICAL_RESOURCE_TYPE_LABORATORY_RESULTS,
setOf(medicalDataSource.id),
pageSize = pageSize,
)
// Continue reading pages until all `MedicalResource`s are read
var pageToken: String? = null
do {
// Prepare paged request if needed
val request: ReadMedicalResourcesRequest =
if (pageToken == null) initialRequest
else ReadMedicalResourcesPageRequest(pageToken, pageSize = pageSize)
// Read `MedicalResource`s
val response: ReadMedicalResourcesResponse =
healthConnectClient.readMedicalResources(request)
// Process `MedicalResource`s
val resources: List<MedicalResource> = response.medicalResources
// Advance to next page
pageToken = response.nextPageToken
} while (pageToken != null)
आईडी के हिसाब से MedicalResource रिकॉर्ड पाना
आईडी का इस्तेमाल करके, MedicalResource
को भी वापस पाया जा सकता है:
// Retrieve `fhirResourceType` type `MedicalResource`s with the specified `id`s from the
// provided `MedicalDataSource`
val retrievedMedicalResources: List<MedicalResource> =
healthConnectClient.readMedicalResources(
medicalResources.map { medicalResource: MedicalResource ->
MedicalResourceId(
dataSourceId = medicalDataSource.id,
fhirResourceType = medicalResource.id.fhirResourceType,
fhirResourceId = medicalResource.id.fhirResourceId
)
}
)
डेटा सोर्स
आपके पास, Health Connect में सेव किए गए किसी भी डेटा सोर्स (MedicalDataSource
) को पढ़ने का विकल्प होता है. इसमें अन्य ऐप्लिकेशन से जोड़ा गया डेटा भी शामिल होता है.
पैकेज के नाम के हिसाब से MedicalDataSource रिकॉर्ड पाना
पैकेज के नाम (ऐप्लिकेशन) के हिसाब से अनुरोध करने के लिए, GetMedicalDataSourcesRequest
का इस्तेमाल करें:
// Retrieve all `MedicalDataSource`s created by any of the specified package names
// Package names may be found in other `MedicalDataSource`s or from arbitrary input
val medicalDataSources: List<MedicalDataSource> =
healthConnectClient.getMedicalDataSources(
GetMedicalDataSourcesRequest(listOf(medicalDataSource.packageName, anotherPackageName))
)
आईडी के हिसाब से, MedicalDataSource रिकॉर्ड पाना
अगर आपको इसकी जानकारी है, तो id
के ज़रिए अनुरोध करें:
// Retrieve all `MedicalDataSource` with `id` matching any of the given ids
val medicalDataSources: List<MedicalDataSource> =
healthConnectClient.getMedicalDataSources(listOf(medicalDataSource.id, anotherId))