চিকিৎসা তথ্য লিখুন

এই নির্দেশিকাটি Health Connect সংস্করণ 1.1.0-beta02 এর সাথে সামঞ্জস্যপূর্ণ।

হেলথ কানেক্টে পার্সোনাল হেলথ রেকর্ডস (PHR) ব্যবহার করে মেডিকেল ডেটা লিখতে, এই ধাপগুলি অনুসরণ করুন:

  1. বৈশিষ্ট্য প্রাপ্যতা জন্য পরীক্ষা করুন
  2. লেখার অনুমতির জন্য অনুরোধ করুন
  3. একটি ডেটা উত্স তৈরি করুন ( MedicalDataSource )
  4. একটি চিকিৎসা সম্পদ লিখুন ( MedicalResource )

বৈশিষ্ট্য প্রাপ্যতা

একজন ব্যবহারকারীর ডিভাইস হেলথ কানেক্টে PHR সমর্থন করে কিনা তা নির্ধারণ করতে, ক্লায়েন্টে 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

আপনার অ্যাপের জন্য প্লে কনসোলে, সেইসাথে আপনার অ্যাপের ম্যানিফেস্টে এই অনুমতিগুলি ঘোষণা করুন:

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

আপনি আপনার ডিভাইস এবং অ্যাপ্লিকেশানগুলিতে ব্যবহার করতে চান এমন সমস্ত উপযুক্ত অনুমতি ঘোষণা করার জন্য আপনি দায়ী৷ ব্যবহার করার আগে ব্যবহারকারীর দ্বারা প্রতিটি অনুমতি দেওয়া হয়েছে কিনা তাও আপনার পরীক্ষা করা উচিত।

ব্যবহারকারীর কাছ থেকে অনুমতি অনুরোধ

একটি ক্লায়েন্ট উদাহরণ তৈরি করার পরে, আপনার অ্যাপটিকে ব্যবহারকারীর কাছ থেকে অনুমতির অনুরোধ করতে হবে। ব্যবহারকারীদের যেকোন সময় অনুমতি প্রদান বা অস্বীকার করার অনুমতি দিতে হবে।

এটি করতে, প্রয়োজনীয় ডেটা প্রকারের জন্য অনুমতিগুলির একটি সেট তৈরি করুন৷ নিশ্চিত করুন যে সেটের অনুমতিগুলি প্রথমে আপনার Android ম্যানিফেস্টে ঘোষণা করা হয়েছে।

// 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 ব্যবহার করুন। এটি স্বাস্থ্য সংযোগের অনুমতি স্ক্রীন প্রদর্শন করে।

// 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।

Health Connect-এ সংরক্ষিত মেডিকেল রেকর্ডগুলি একটি MedicalDataSource এ সংগঠিত হয়। এটি একই ব্যক্তির জন্য মেডিকেল রেকর্ড আলাদা করার অনুমতি দেয় যা API বা স্বাস্থ্যসেবা সিস্টেমের মতো বিভিন্ন উত্স থেকে আসে।

যদি সমস্ত রেকর্ড একই উত্স থেকে উদ্ভূত হয়, একটি লেখার অ্যাপের শুধুমাত্র একটি MedicalDataSource তৈরি করতে হবে। যদি রেকর্ডগুলি একাধিক উত্স থেকে উদ্ভূত হয়, তবে একটি অ্যাপ এখনও একটি MedicalDataSource তৈরি করতে পারে যদি সেই ডেটাটি মিলিত হয় এবং সমস্ত রেকর্ডে FHIR রিসোর্স টাইপ এবং FHIR রিসোর্স আইডির একটি অনন্য সমন্বয় থাকে৷ অন্যথায়, প্রতিটি ডেটা উত্সের জন্য একটি MedicalDataSource তৈরি করা উচিত।

সমস্ত মেডিকেল রেকর্ড অবশ্যই একটি MedicalDataSource এর সাথে যুক্ত হতে হবে, তাই সম্পদ লেখার আগে এটি তৈরি করা আবশ্যক।

MedicalDataSource বৈশিষ্ট্য:

  • ডিসপ্লে নেম (প্রয়োজনীয়) - ডেটা উৎসের জন্য ব্যবহারকারীর মুখোমুখী ডিসপ্লে নাম, প্রতি লেখার অ্যাপের জন্য স্বতন্ত্রভাবে চিহ্নিত।
  • এফএইচআইআর বেস ইউআরআই (প্রয়োজনীয়) - একটি এফএইচআইআর সার্ভার থেকে আসা ডেটার জন্য এটি এফএইচআইআর বেস ইউআরএল হওয়া উচিত (উদাহরণস্বরূপ, 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)
        )
    )

একটি MedicalDataSource রেকর্ড মুছুন

পূর্ববর্তী উদাহরণ সৃষ্টির উপর সিস্টেম দ্বারা একটি 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-এ মেডিকেল রিসোর্স লেখার আগে, JSON-এ আপনার FHIR রিসোর্স রেকর্ড তৈরি করুন। মেডিকেল রিসোর্স হিসেবে ঢোকানোর জন্য প্রতিটি JSON এর নিজস্ব ভেরিয়েবলে সঞ্চয় করুন।

আপনার যদি FHIR JSON ফর্ম্যাটে সাহায্যের প্রয়োজন হয়, HL7 সংস্থার দ্বারা প্রদত্ত উদাহরণের ডেটা পড়ুন।

মেডিকেল রিসোর্স রেকর্ড ঢোকান বা আপডেট করুন

UpsertMedicalResourceRequest ব্যবহার করুন নতুন সন্নিবেশ করান বা একটি MedicalDataSource এর জন্য বিদ্যমান MedicalResource রেকর্ড আপডেট করুন:

// 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 স্ট্রিং প্রতিনিধিত্ব করে।

FHIR রিসোর্স টাইপ হিসাবে AllergyIntolerance ব্যবহার করে JSON দেখতে কেমন হতে পারে তার একটি উদাহরণ এখানে দেওয়া হল, যা PHR-এ 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)
    )
)