इस सुविधा को कौन इस्तेमाल कर सकता है
यह पता करने के लिए कि उपयोगकर्ता के डिवाइस पर, 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.WRITE_MEDICAL_DATA
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.WRITE_MEDICAL_DATA" />
<uses-permission
android:name="android.permission.health.READ_MEDICAL_DATA_ALLERGIES_INTOLERANCES" />
...
</application>
आपको उन सभी अनुमतियों के बारे में बताना होगा जिनका इस्तेमाल आपको अपने डिवाइसों और ऐप्लिकेशन में करना है. आपको यह भी देखना चाहिए कि इस्तेमाल करने से पहले, उपयोगकर्ता ने हर अनुमति दी है या नहीं.
इस्तेमाल का उदाहरण
इस सेक्शन में, PHR की सुविधा के साथ आने वाले Jetpack SDK टूल के रिलीज़ के लिए, बुनियादी ऑपरेशन के कोड सैंपल दिए गए हैं. इनमें बदलाव हो सकता है.
MedicalDataSource रिकॉर्ड बनाना
// Create a `MedicalDataSource`
// Note that `displayName` must be unique across `MedicalDataSource`s
// Each `MedicalDataSource` is assigned an `id` by the system on creation
val medicalDataSource: MedicalDataSource =
healthConnectClient.createMedicalDataSource(
CreateMedicalDataSourceRequest(
fhirBaseUri = Uri.parse("https://fhir.com/oauth/api/FHIR/R4/"),
displayName = "Test Data Source",
fhirVersion = FhirVersion(4, 0, 1)
)
)
MedicalDataSource का रिकॉर्ड मिटाना
पिछले उदाहरण में, सिस्टम ने एलिमेंट बनाने पर id
दिखाया है. मिटाने के लिए,
उसी id
का रेफ़रंस दें:
// Delete the `MedicalDataSource` that has the specified `id`
healthConnectClient.deleteMedicalDataSourceWithData(medicalDataSource.id)
पैकेज के नाम के हिसाब से 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))
MedicalResource रिकॉर्ड डालना या अपडेट करना
MedicalDataSource
के लिए नए MedicalResource
रिकॉर्ड डालने या मौजूदा रिकॉर्ड अपडेट करने के लिए, UpsertMedicalResourceRequest
का इस्तेमाल करें:
// Insert `MedicalResource`s into the `MedicalDataSource`
val medicalResources: List<MedicalResource> =
healthConnectClient.upsertMedicalResources(
listOf(
UpsertMedicalResourceRequest(
medicalDataSource.id,
medicalDataSource.fhirVersion,
medicationJsonToInsert // a valid FHIR json string
)
)
)
// Update `MedicalResource`s in the `MedicalDataSource`
val updatedMedicalResources: List<MedicalResource> =
healthConnectClient.upsertMedicalResources(
listOf(
UpsertMedicalResourceRequest(
medicalDataSource.id,
medicalDataSource.fhirVersion,
// a valid FHIR json string
// if this resource has the same type and ID as in `medicationJsonToInsert`,
// this `upsertMedicalResources()` call will update the previously inserted
// `MedicalResource`
updatedMedicationJsonToInsert
)
)
)
MedicalResource के रिकॉर्ड पाना
medicalResourceType
की जानकारी देकर, किसी get अनुरोध को फ़िल्टर करें. पेज किए गए अनुरोधों का इस्तेमाल करना न भूलें. साथ ही, रेट सीमित करने के बारे में भी ध्यान रखें.
// 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 के रिकॉर्ड पाना
// 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
)
}
)
आईडी के हिसाब से MedicalResource रिकॉर्ड मिटाना
MedicalResource
रिकॉर्ड को आईडी के हिसाब से मिटाया जा सकता है:
// Delete `MedicalResource`s matching the specified `dataSourceId`, `type` and `fhirResourceId`
healthConnectClient.deleteMedicalResources(
medicalResources.map { medicalResource: MedicalResource ->
MedicalResourceId(
dataSourceId = medicalDataSource.id,
fhirResourceType = medicalResource.id.fhirResourceType,
fhirResourceId = medicalResource.id.fhirResourceId
)
}
)
इसके अलावा, medicalResourceType
भी इन्हें मिटा सकता है:
// Delete all `MedicalResource`s that are in any pair of provided `dataSourceIds` and
// `medicalResourceTypes`
healthConnectClient.deleteMedicalResources(
DeleteMedicalResourcesRequest(
dataSourceIds = setOf(medicalDataSource.id),
medicalResourceTypes = setOf(MEDICAL_RESOURCE_TYPE_MEDICATIONS)
)
)