Yapılandırılmış Veri Yakalama Kitaplığı ile sağlık verilerini yakalama ve işleme

1. Başlamadan önce

Ne oluşturacaksınız?

Bu codelab'de, Yapılandırılmış Veri Yakalama Kitaplığı ile Android uygulaması oluşturmayı öğreneceksiniz. Uygulamanız, FHIR Anketlerini ve yanıtlarını oluşturmak ve işlemek için Yapılandırılmış Veri Yakalama Kitaplığı'nı kullanır.

Neler öğreneceksiniz?

  • Yapılandırılmış Veri Yakalama Kitaplığı'nı Android uygulamanıza entegre etme
  • Anket görüntüleme
  • QuestionnaireResponse olarak nasıl yanıt alabilirsiniz?
  • QuestionnaireResponse dosyasından FHIR kaynaklarını ayıklama

İhtiyacınız olanlar

Bu codelab, Yapılandırılmış Veri Yakalama Kitaplığı'na odaklanmaktadır. Alakalı olmayan kavramlar ve kod blokları işaretlenmiştir ve yalnızca kopyalayıp yapıştırmanız için paylaşılmıştır. Daha önce Android uygulaması geliştirmediyseniz ilk uygulamanızı oluşturarak başlayabilirsiniz.

2. Hazırlanın

Kodu indirme

Bu codelab'in kodunu indirmek için Android FHIR SDK deposunu klonlayın: git clone https://github.com/google/android-fhir.git

Bu codelab'in başlangıç projesi codelabs/datacapture konumunda bulunur.

Uygulamayı Android Studio'ya aktarma

Başlangıç uygulamasını Android Studio'ya aktararak başlayalım.

Android Studio'yu açın, Import Project (Gradle, Eclipse ADT, etc.)'yi (Projeyi İçe Aktar (Gradle, Eclipse ADT vb.)) seçin ve daha önce indirdiğiniz kaynak kodundan codelabs/datacapture klasörünü belirleyin.

Android Studio başlangıç ekranı

Başlangıç uygulamasını çalıştırma

Projeyi Android Studio'ya aktardığınıza göre artık uygulamayı ilk kez çalıştırmaya hazırsınız.

Android cihazınızı USB ile ana makinenize bağlayın veya Android Studio emülatörünü başlatın ve Android Studio araç çubuğunda Çalıştır'ı (Çalıştır düğmesi) tıklayın.

Hello World uygulaması

Gördüğünüz gibi, henüz pek fazla içerik yok. Bu nedenle, hemen uygulamanızda anket göstermeye başlayalım.

3. Projeye Yapılandırılmış Veri Yakalama Kitaplığı'nı ekleme

Yapılandırılmış Veri Yakalama Kitaplığı'nın bağımlılıklarını ekleyin.

Yapılandırılmış Veri Yakalama Kitaplığı bağımlılıkları, Yapılandırılmış Veri Yakalama Kitaplığı'nı uygulamanıza entegre etmenize olanak tanır. Projenizin app/build.gradle.kts dosyasının sonuna aşağıdaki satırları ekleyin:

dependencies {
    // ...

    implementation("com.google.android.fhir:data-capture:1.2.0")
    implementation("androidx.fragment:fragment-ktx:1.6.0")
}

Projenizi Gradle dosyalarıyla senkronize etme

Tüm bağımlılıkların uygulamanızda kullanılabilir olduğundan emin olmak için bu noktada projenizi Gradle dosyalarıyla senkronize etmeniz gerekir.

Android Studio araç çubuğundan Projeyi Gradle Dosyalarıyla Senkronize Et'i (Gradle senkronizasyon düğmesi) seçin. Bağımlılıkların doğru şekilde çalıştığını kontrol etmek için uygulamayı tekrar çalıştırabilirsiniz.

4. Anket görüntüleme

Bu adımda, başlangıç uygulamasına FragmentContainerView içinde anket oluşturma işlevini ekleyeceksiniz.

Bu süreçte Android Studio, gerekli içe aktarmaları eklemenizi ister:

  • androidx.core.os.bundleOf
  • androidx.fragment.app.add
  • androidx.fragment.app.commit
  • android.util.Log
  • com.google.android.fhir.datacapture.QuestionnaireFragment

1. adım: FragmentContainerView ekleyin

Uygulamanın düzenine FragmentContainerView ekleyin. Daha sonra oluşturacağınız QuestionnaireFragment burada gösterilir.

  1. activity_main.xml (res > layout > activity_main.xml) dosyasını açın.
  2. Kod, Bölünmüş ve Tasarım görünümleriyle ilgili seçenekleri Düzen Düzenleyici'nin sağ üst kısmında bulabilirsiniz.
  3. Kod görünümünü seçin. Düzen görünümü seçenekleri
  4. TextView öğesine ihtiyacınız yok. Bu nedenle, öğeyi silin. <TextView ile kapanış /> arasındaki her şeyi sildiğinizden emin olun.
  5. ConstraintLayout içine FragmentContainerView ekleyin. activity_main.xml dosyanız şu şekilde görünmelidir:
    <?xml version="1.0" encoding="utf-8" ?>
    <androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
    >
    
    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragment_container_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

2. adım: QuestionnaireFragment yapılandırın

QuestionnaireFragment, oluşturulması için JSON kodlu bir FHIR Anketi gerektirir. Anket küçük olduğundan (<512 KB) bunu, parçayı oluşturmak için kullanılacak bir Bundle bağımsız değişken dizisinde String olarak eklersiniz. Daha büyük anketler, performans nedeniyle URI olarak sağlanmalıdır.

İsterseniz questionnaire.json dosyasına bakabilirsiniz ancak Yapılandırılmış Veri Yakalama Kitaplığı'nın avantajlarından biri, FHIR Anketi'nin yapısını (veya FHIR hakkında herhangi bir şeyi) bilmenize gerek kalmadan oluşturulmasını sağlamasıdır. Bu dosyayı codelab'in ilerleyen bölümlerinde daha ayrıntılı olarak inceleyeceksiniz.

Oluşturucusunu kullanarak bir QuestionnaireFragment oluşturun ve setter işlevini kullanarak anketi ayarlayın. QuestionnaireFragment öğesini düzen kapsayıcısında göstermek için FragmentManager kullanarak FragmentTransaction oluşturun.

MainActivity.kt bağlantısını açın ve aşağıdaki kodu MainActivity sınıfına ekleyin:

// Step 2: Configure a QuestionnaireFragment
questionnaireJsonString = getStringFromAssets("questionnaire.json")

val questionnaireFragment =
  QuestionnaireFragment.builder().setQuestionnaire(questionnaireJsonString!!).build()

3. adım: QuestionnaireFragment'ı FragmentContainerView'a ekleyin

QuestionnaireFragment öğesini düzen kapsayıcısında göstermek için FragmentManager kullanarak FragmentTransaction oluşturun. FragmentManager, daha önce oluşturulan questionnaireParams kullanılarak örnek oluşturmayı yönetir.

Aşağıdaki kodu MainActivity sınıfına ekleyin:

// Step 3: Add the QuestionnaireFragment to the FragmentContainerView
if (savedInstanceState == null) {
  supportFragmentManager.commit {
    setReorderingAllowed(true)
    add(R.id.fragment_container_view, questionnaireFragment)
  }
}
// Submit button callback
supportFragmentManager.setFragmentResultListener(
  QuestionnaireFragment.SUBMIT_REQUEST_KEY,
  this,
) { _, _ ->
  submitQuestionnaire()
}

Parçaları kullanma hakkında daha fazla bilgi edinin.

Android Studio araç çubuğunda Run'ı (Çalıştır) (Çalıştır düğmesi) tıklayarak codelab'i çalıştıralım. Aşağıdakine benzer bir ifade görürsünüz:

Anketin Emülatörde Oluşturulması

Anketi inceleyin ve bazı soruları yanıtlamayı deneyin. Orijinal FHIR anketindeki temel türe göre otomatik olarak oluşturulan boole, metin ve tarihler dahil olmak üzere birkaç farklı yanıt widget'ı kullanılır.

Teknik olarak, anket oluşturmak için yapmanız gereken tek şey budur. Tebrikler!

Ancak kullanıcıların girdiği yanıtları göremiyorsanız anket çok da faydalı olmaz. Anket yanıtı alma sürecinin bir sonraki adımına geçelim.

5. Anket yanıtı alma

Önceki adımlarda, uygulamanızda bir FHIR anketini oluşturmuştunuz.

Bu bölümde, anketten alınan yanıtları QuestionnaireResponse olarak alırsınız.

submitQuestionnaire() yöntemini bulun ve aşağıdaki kodu ekleyin:

// Get a questionnaire response
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container_view)
        as QuestionnaireFragment
val questionnaireResponse = fragment.getQuestionnaireResponse()

// Print the response to the log
val jsonParser = FhirContext.forCached(FhirVersionEnum.R4).newJsonParser()
val questionnaireResponseString =
    jsonParser.encodeResourceToString(questionnaireResponse)
Log.d("response", questionnaireResponseString)

Anket yanıtını almak için daha önce oluşturulan anket parçasını alıp getQuestionnaireResponse() yöntemini kullanırsınız. Bu işlem, doğrudan veya Android FHIR SDK'nın diğer bölümleriyle birlikte kullanabileceğiniz bir HAPI FHIR QuestionnaireResponse döndürür. Bu codelab, günlükte görüntülemek için JSON dizesine dönüştürmek üzere diğer HAPI FHIR kitaplıklarını kullanır.

En son değişikliklerinizle yeniden oluşturmak için uygulamayı tekrar çalıştırın. Çalıştıktan sonra ankete bazı bilgiler girip Gönder'e dokunun. Günlükte, QuestionnaireResponse öğesini JSON olarak içeren bir mesaj görmeniz gerekir.

D/response: {"resourceType":"QuestionnaireResponse","item":[{"linkId":"PR","text":"Patient information","item":[{"linkId":"PR-name","text":"Name","item":[{"linkId":"PR-name-given","text":"First Name","answer":[{"valueString":"Dani"}]},{"linkId":"PR-name-family","text":"Family Name","answer":[{"valueString":"Lee"}]}]},{"linkId":"PR-birthdate","text":"Date of Birth","answer":[{"valueDate":"1990-02-14"}]},{"linkId":"PR-id","text":"Identifying information","item":[{"linkId":"PR-name-id-url"},{"linkId":"PR-name-id","text":"Patient Id","answer":[{"valueString":"12345"}]}]}]}]}

6. QuestionnaireResponse öğesinden FHIR kaynaklarını ayıklama

Başlangıç projesine dahil edilen anket, basit bir hasta kaydı akışı içindir. Bu nedenle, anket yanıtlarını kullanarak FHIR Patient kaynağı oluşturmak isteyebilirsiniz. Anket yanıtından FHIR kaynaklarına yapılan bu dönüşüme veri ayıklama adı verilir. Bu işlemi, Yapılandırılmış Veri Yakalama Kitaplığı'nın ResourceMapper sınıfıyla yapabiliriz.

Veri ayıklama işlemini gerçekleştirmek için anketinizin, veri ayıklama işleminin nasıl yapılacağıyla ilgili bilgileri içerecek şekilde oluşturulması gerekir. Neyse ki örnek anket, tanıma dayalı çıkarma için önceden ayarlanmıştır.

submitQuestionnaire() yöntemini bulun ve aşağıdaki kodu ekleyin:

lifecycleScope.launch {
  val questionnaire =
    jsonParser.parseResource(questionnaireJsonString) as Questionnaire
  val bundle = ResourceMapper.extract(questionnaire, questionnaireResponse)
  Log.d("extraction result", jsonParser.encodeResourceToString(bundle))
}

ResourceMapper.extract() için, daha önce anket JSON dizesini ayrıştırarak oluşturabileceğiniz bir HAPI FHIR Anketi ve daha önce aldığımız bir QuestionnaireResponse gerekir. Bu işlem, bir veya daha fazla çıkarılmış kaynak (bu örnekte tek bir Hasta kaynağı) içeren bir HAPI FHIR işlemi Paketi döndürür.

En son değişikliklerinizle yeniden oluşturmak için uygulamayı tekrar çalıştırın. Çalışmaya başladıktan sonra bazı bilgileri girip Gönder'e dokunun. Günlükte, çıkarılan FHIR paketinin JSON gösterimini içeren bir extraction result mesajı görürsünüz.

D/extraction result: {"resourceType":"Bundle","type":"transaction","entry":[{"resource":{"resourceType":"Patient","identifier":[{"value":"12345"}],"name":[{"family":"Lee","given":["Dani"]}],"birthDate":"1990-02-14"}}]}

7. Tebrikler!

Uygulamanızda FHIR anketlerini ve yanıtlarını işlemek için Yapılandırılmış Veri Yakalama Kitaplığı'nı kullandınız:

  • Anket görüntüleme
  • Anket yanıtı alma
  • QuestionnaireResponse dosyasından FHIR kaynaklarını çıkarma

Çalıştırmak için yapmanız gerekenler bu kadar.

Devam ederken uygulamanızda FHIR kaynaklarıyla daha fazla şekilde çalışmak isteyebilirsiniz. FHIR kaynaklarını uygulamanızda yerel olarak nasıl depolayacağınızı ve yöneteceğinizi, ayrıca verileri uzak bir FHIR sunucusuyla nasıl senkronize edeceğinizi öğrenmek için Android FHIR SDK'nın FHIR Engine Kitaplığı'na göz atın.

İşlediğimiz konular

  • Android uygulamanıza Yapılandırılmış Veri Yakalama Kitaplığı'nı ekleme
  • FHIR anketleriyle çalışmak için QuestionnaireFragment ve ResourceMapper simgelerini kullanma

Sonraki Adımlar

  • Yapılandırılmış Veri Yakalama Kitaplığı'nın dokümanlarını inceleyin.
  • Oluşturulan anketlerin görünümünü ve tarzını özelleştirme
  • Yapılandırılmış Veri Yakalama Kitaplığı'nı kendi Android uygulamanızda kullanma

Daha Fazla Bilgi