হেলথ কানেক্টে মেডিকেল রেকর্ড ব্যবহার করে মেডিকেল ডেটা লেখার জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:
- বৈশিষ্ট্যের উপলভ্যতা পরীক্ষা করুন
- লেখার অনুমতির অনুরোধ করুন
- একটি ডেটা সোর্স তৈরি করুন (
MedicalDataSource
) - একটি মেডিকেল রিসোর্স লিখুন (
MedicalResource
)
বৈশিষ্ট্যের প্রাপ্যতা
একজন ব্যবহারকারীর ডিভাইস হেলথ কানেক্টে মেডিকেল রেকর্ড সমর্থন করে কিনা তা নির্ধারণ করতে, ক্লায়েন্টে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
আপনার অ্যাপের জন্য Play Console-এ, এবং অ্যাপের ম্যানিফেস্টে এই অনুমতিগুলি ঘোষণা করুন:
<application>
<uses-permission
android:name="android.permission.health.WRITE_MEDICAL_DATA" />
</application>
আপনার ডিভাইস এবং অ্যাপগুলিতে আপনি যে সমস্ত উপযুক্ত অনুমতি ব্যবহার করতে চান তা ঘোষণা করার দায়িত্ব আপনার। ব্যবহারের আগে আপনার প্রতিটি অনুমতি ব্যবহারকারী কর্তৃক মঞ্জুর করা হয়েছে কিনা তাও পরীক্ষা করা উচিত।
ব্যবহারকারীর কাছ থেকে অনুমতির অনুরোধ করুন
একটি ক্লায়েন্ট ইনস্ট্যান্স তৈরি করার পরে, আপনার অ্যাপটিকে ব্যবহারকারীর কাছ থেকে অনুমতি চাইতে হবে। ব্যবহারকারীদের যেকোনো সময় অনুমতি প্রদান বা অস্বীকার করার অনুমতি দিতে হবে।
এটি করার জন্য, প্রয়োজনীয় ডেটা টাইপের জন্য অনুমতিগুলির একটি সেট তৈরি করুন। নিশ্চিত করুন যে সেটের অনুমতিগুলি প্রথমে আপনার অ্যান্ড্রয়েড ম্যানিফেস্টে ঘোষণা করা হয়েছে।
// Create a set of permissions for required data types
import androidx.health.connect.client.permission.HealthPermission.Companion.PERMISSION_WRITE_MEDICAL_DATA
val PERMISSIONS =
setOf(
PERMISSION_WRITE_MEDICAL_DATA
)
আপনার অ্যাপটি ইতিমধ্যেই প্রয়োজনীয় অনুমতি পেয়েছে কিনা তা দেখতে 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)
}
}
যেহেতু ব্যবহারকারীরা যেকোনো সময় অনুমতি দিতে বা প্রত্যাহার করতে পারেন, তাই আপনার অ্যাপকে পর্যায়ক্রমে মঞ্জুরকৃত অনুমতিগুলি পরীক্ষা করতে হবে এবং অনুমতি হারিয়ে গেলে পরিস্থিতি মোকাবেলা করতে হবে।
তথ্য সূত্র
হেলথ কানেক্টে একটি MedicalDataSource
ব্যবহারকারী-মুখী ডেটার উৎস, যেমন একটি স্বাস্থ্যসেবা সংস্থা, একটি হাসপাতাল, অথবা একটি API উপস্থাপন করে।
হেলথ কানেক্টে সংরক্ষিত মেডিকেল রেকর্ডগুলি একটি MedicalDataSource
সংগঠিত করা হয়। এটি একই ব্যক্তির জন্য API বা স্বাস্থ্যসেবা ব্যবস্থার মতো বিভিন্ন উৎস থেকে আসা মেডিকেল রেকর্ডগুলিকে পৃথক করার অনুমতি দেয়।
MedicalDataSource
রেকর্ড তৈরি করার সময় নিম্নলিখিত বিষয়গুলি বিবেচনা করুন:
- যদি সমস্ত রেকর্ড একই উৎস থেকে উদ্ভূত হয়, তাহলে একটি
MedicalDataSource
তৈরি করুন। - যদি রেকর্ডগুলি একাধিক উৎস থেকে উদ্ভূত হয়, তাহলে আপনি একটি একক
MedicalDataSource
তৈরি করতে পারেন যদি:- তথ্য সমন্বয় করা হয়েছে।
- সকল রেকর্ডে FHIR রিসোর্স টাইপ এবং FHIR রিসোর্স আইডির একটি অনন্য সমন্বয় থাকে। একটি
MedicalDataSource
এর মধ্যে, যেকোনো FHIR রিসোর্স আইডির সাথে একটি FHIR রিসোর্স টাইপের শুধুমাত্র একটি রেকর্ড থাকতে পারে।
- অন্যথায়, ডুপ্লিকেট আইডি প্রতিরোধ করতে, প্রতিটি ডেটা সোর্সের জন্য একটি
MedicalDataSource
তৈরি করুন।
সমস্ত মেডিকেল রেকর্ড অবশ্যই একটি MedicalDataSource
এর সাথে যুক্ত থাকতে হবে, তাই রিসোর্স লেখার আগে এটি তৈরি করতে হবে।
MedicalDataSource
বৈশিষ্ট্য:
- প্রদর্শনের নাম (প্রয়োজনীয়) - ডেটা উৎসের জন্য ব্যবহারকারীর মুখের প্রদর্শনের নাম, প্রতিটি লেখার অ্যাপের জন্য অনন্যভাবে চিহ্নিত।
FHIR বেস URI (প্রয়োজনীয়) - FHIR সার্ভার থেকে আসা ডেটার জন্য এটি FHIR বেস URL হওয়া উচিত (উদাহরণস্বরূপ,
https://example.com/fhir/
)। একই FHIR বেস URL এর সাথে একাধিক ডেটা উৎস যুক্ত করা যেতে পারে।যদি কোনও অ্যাপ FHIR URL ছাড়াই ডেটা তৈরি করে, তাহলে এটি অ্যাপ দ্বারা সংজ্ঞায়িত একটি অনন্য এবং বোধগম্য URI (উদাহরণস্বরূপ,
myapp://..
) হওয়া উচিত যা ডেটার উৎস নির্দেশ করে।উদাহরণস্বরূপ, যদি কোনও ক্লায়েন্ট অ্যাপ ডিপ লিঙ্কিং সমর্থন করে, তাহলে এই ডিপ লিঙ্কটি FHIR বেস URI হিসেবে ব্যবহার করা যেতে পারে। URI-এর সর্বোচ্চ দৈর্ঘ্য 2000 অক্ষর।
প্যাকেজের নাম (স্বয়ংক্রিয়ভাবে পূর্ণ) - ডেটা লেখার অ্যাপ।
FHIR সংস্করণ (প্রয়োজনীয়) - FHIR সংস্করণ। অবশ্যই একটি সমর্থিত সংস্করণ হতে হবে।
একটি মেডিকেল ডেটাসোর্স রেকর্ড তৈরি করুন
আপনার অ্যাপটি যে সকল স্বাস্থ্যসেবা সংস্থা বা সত্তার সাথে সংযুক্ত তার একটি রেকর্ড তৈরি করুন।
// 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)
)
)
একটি মেডিকেল ডেটাসোর্স রেকর্ড মুছে ফেলুন
পূর্ববর্তী উদাহরণটি তৈরির সময় সিস্টেম দ্বারা একটি id
প্রদান করে। যদি আপনার MedicalDataSource
রেকর্ডটি মুছে ফেলার প্রয়োজন হয়, তাহলে একই id
উল্লেখ করুন:
// Delete the `MedicalDataSource` that has the specified `id`
healthConnectClient.deleteMedicalDataSourceWithData(medicalDataSource.id)
চিকিৎসা সম্পদ
হেলথ কানেক্টে একটি MedicalResource
একটি FHIR রিসোর্স (যার মধ্যে একটি মেডিকেল রেকর্ড থাকে) এবং মেটাডেটা উপস্থাপন করে।
MedicalResource
সম্পদের বৈশিষ্ট্য:
- DataSourceId (প্রয়োজনীয়) -
MedicalDataSource
এর জন্য বর্ণিত ডেটা সোর্স। - FHIR সংস্করণ (প্রয়োজনীয়) - FHIR সংস্করণ। অবশ্যই একটি সমর্থিত সংস্করণ হতে হবে।
- FHIR রিসোর্স (প্রয়োজনীয়) JSON-এনকোডেড FHIR রিসোর্স ইনস্ট্যান্স।
- মেডিকেল রিসোর্সের ধরণ (স্বয়ংক্রিয়ভাবে পূর্ণ) - রিসোর্সের ব্যবহারকারী-মুখী বিভাগ , ব্যবহারকারী-মুখী অনুমতিগুলিতে ম্যাপিং।
JSON-এ FHIR রিসোর্স প্রস্তুত করুন
Health Connect-এ মেডিকেল রিসোর্স লেখার আগে, আপনার FHIR রিসোর্স রেকর্ডগুলি JSON-এ প্রস্তুত করুন। মেডিকেল রিসোর্স হিসেবে সন্নিবেশ করার জন্য প্রতিটি JSON-কে তার নিজস্ব ভেরিয়েবলে সংরক্ষণ করুন।
FHIR JSON ফর্ম্যাটের ব্যাপারে যদি আপনার সাহায্যের প্রয়োজন হয়, তাহলে HL7 সংস্থার দেওয়া উদাহরণ ডেটা দেখুন।
মেডিকেল রিসোর্স রেকর্ড সন্নিবেশ বা আপডেট করুন
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
)
)
)
উদাহরণ FHIR রিসোর্স
পূর্ববর্তী উদাহরণে, পরিবর্তনশীল medicationJsonToInsert
একটি বৈধ FHIR JSON স্ট্রিং উপস্থাপন করে।
এখানে JSON কেমন দেখতে হতে পারে তার একটি উদাহরণ দেওয়া হল, FHIR রিসোর্স টাইপ হিসেবে AllergyIntolerance ব্যবহার করে, যা মেডিকেল রেকর্ডে FHIR_RESOURCE_TYPE_ALLERGY_INTOLERANCE
এর মেডিকেল রিসোর্স টাইপের সাথে ম্যাপ করবে:
{
"resourceType": "AllergyIntolerance",
"id": "allergyintolerance-1",
"criticality": "high",
"code": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "91936005",
"display": "Penicillin allergy"
}
],
"text": "Penicillin allergy"
},
"recordedDate": "2020-10-09T14:58:00+00:00",
"asserter": {
"reference": "Patient/patient-1"
},
"lastOccurrence": "2020-10-09",
"patient": {
"reference": "Patient/patient-1",
"display": "B., Alex"
}
...
}
একটি মেডিকেল রিসোর্স রেকর্ড মুছে ফেলুন
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)
)
)