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 nasıl Android uygulaması oluşturacağınızı öğreneceksiniz. Uygulamanız, FHIR Anketlerini ve yanıtlarını oluşturup 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 nasıl görüntülenir?
  • QuestionnaireResponse olarak yanıt alma
  • QuestionnaireResponse öğesinden FHIR kaynaklarını çıkarma

Gerekenler

Bu codelab'de, Yapılandırılmış Veri Yakalama Kitaplığı konusuna odaklanılmıştır. Alakalı olmayan kavramlar ve kod blokları işaretlenmiştir ve yalnızca kopyalayıp yapıştırmanız için kullanımınıza sunulmuştur. Daha önce Android uygulamaları oluşturmadıysanız ilk uygulamanızı oluşturarak başlayabilirsiniz.

2. Hazırlanın

Kodu İndirin

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 konumundadır.

Uygulamayı Android Studio'ya aktarın

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

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

Android Studio başlangıç ekranı

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

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

Android cihazınızı USB aracılığıyla barındırıcınıza bağlayın veya Android Studio emülatörünü başlatın ve Android Studio araç çubuğundan Çalıştır'ı (Çalıştır düğmesi) tıklayın.

Hello World uygulaması

Görebileceğiniz üzere burada henüz çok fazla bilgi bulunmuyor. O halde hemen uygulamanızda bir anket görüntülemeye başlayalım.

3. Projeye Yapılandırılmış Veri Yakalama Kitaplığı ekleyin

Yapılandırılmış Veri Yakalama Kitaplığı için bağımlılıkları ekleyin

Yapılandırılmış Veri Yakalama Kitaplığı bağımlılıkları, uygulamanıza Yapılandırılmış Veri Yakalama Kitaplığı'nı 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.0.0")
    implementation("androidx.fragment:fragment-ktx:1.5.5")
}

Projenizi Gradle dosyalarıyla senkronize etme

Tüm bağımlılıkların uygulamanızda kullanılabildiğinden emin olmak için bu aşamada 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. Ayrıca, bağımlılıkların doğru şekilde çalıştığını kontrol etmek için uygulamayı tekrar çalıştırırsınız.

4. Anket görüntüleme

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

Android Studio süreç boyunca gerekli içe aktarmaları eklemenizi isteyecektir:

  • 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 bir FragmentContainerView ekleyin. Daha sonra oluşturacağınız QuestionnaireFragment burada gösterilir.

  1. activity_main.xml dosyasını açın (res > düzen > activity_main.xml).
  2. Düzen Düzenleyici'nin sağ üst köşesinde Kod, Bölme ve Tasarım görünümleri seçeneklerini bulun.
  3. Kod görünümünü seçin. Düzen görünümü seçenekleri
  4. TextView'a ihtiyacınız olmadığı için silin. <TextView bölümünden kapanışa (/>) kadar her şeyi sildiğinizden emin olun.
  5. ConstraintLayout içine bir FragmentContainerView ekleyin. activity_main.xml dosyanız şuna benzer şekilde görünecektir:
    <?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: FragmentContainerView'a QuestionnaireFragment ekleyin

QuestionnaireFragment, oluşturulması için JSON kodlamalı bir FHIR Anketi gerektirir. Anket küçük (<512 KB) olduğundan, parçayı oluşturmak için kullanılacak Bundle bağımsız değişkene String olarak eklersiniz. Daha büyük anketler, performansı artırmak için 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, oluşturmak için FHIR Anketi'nin yapısını (veya FHIR ile ilgili herhangi bir şeyi) bilmenize gerek olmamasıdır. Bu dosyayı daha sonra codelab'de daha ayrıntılı olarak inceleyeceğiz.

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

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

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

if (savedInstanceState == null) {
  supportFragmentManager.commit {
    setReorderingAllowed(true)
    add(
      R.id.fragment_container_view,
      QuestionnaireFragment.builder().setQuestionnaire(questionnaireJsonString!!).build()
    )
  }
}

Parçaların nasıl kullanılacağı hakkında daha fazla bilgi edinin.

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

Emülatörde Oluşturulan Anket

Ankette gezinin ve bazı yanıtlar girmeyi deneyin. Orijinal FHIR anketindeki temel türe göre otomatik olarak oluşturulan boole değerleri, metin ve tarihler dahil olmak üzere birkaç farklı yanıt widget'ı kullanılır.

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

Kullanıcıların girdiği yanıtları göremiyorsanız anket pek yararlı değildir. Anket Yanıtı almanın bir sonraki adımına geçelim!

5. Anket Yanıtı Alma

Önceki adımlarda uygulamanızda bir FHIR anketi oluşturdunuz.

Bu bölümde, bu anketin yanıtlarını Anket Yanıtı olarak bulacaksı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şturduğunuz anket parçasını alıp getQuestionnaireResponse() yöntemini kullanın. Bu, doğrudan veya Android FHIR SDK'sının diğer bölümleriyle kullanabileceğiniz bir HAPI FHIR QuestionnaireResponse döndürür. Bu codelab, günlükte görüntülenecek bir JSON dizesine dönüştürmek için diğer HAPI FHIR kitaplıklarını kullanır.

Yaptığınız son değişikliklerle yeniden geliştirmek için uygulamayı tekrar çalıştırın. Çalıştırıldıktan sonra ankete bazı bilgileri girin ve Gönder'e dokunun. Günlükte, JSON olarak QuestionnaireResponse değerini 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. Anket Yanıtından FHIR Kaynaklarını Çıkarın

Başlangıç projesine eklenen anket, basit bir hasta kayıt akışı içindir. Bu nedenle anket yanıtlarını kullanarak bunlara dayalı bir FHIR Hasta kaynağı oluşturabilirsiniz. Anket yanıtından FHIR kaynaklarına dönüştürme işlemine veri ayıklama adı verilir. Bunu, Yapılandırılmış Veri Yakalama Kitaplığı'nın ResourceMapper sınıfıyla yapabiliriz.

Veri ayıklama işlemi yapmak için anketiniz, veri ayıklama işleminin nasıl gerçekleştirileceğine dair bilgi içerecek şekilde yazılmalıdır. Neyse ki örnek anket, tanıma dayalı ayıklama için zaten 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(), önceki anket JSON dizesini ayrıştırarak oluşturabileceğiniz bir HAPI FHIR Anketi ve önceden aldığımız QuestionnaireResponse bir anketi gerektirir. Ayıklanan bir veya daha fazla kaynak (bu örnekte tek bir Hasta kaynağı) içeren bir HAPI FHIR işlemi Paketi döndürür.

Yaptığınız son değişikliklerle yeniden geliştirmek için uygulamayı tekrar çalıştırın. Uygulama çalıştırıldıktan sonra bazı bilgileri girip Gönder'e dokunun. Günlükte, ayıklanan FHIR paketinin JSON gösterimini içeren bir extraction result mesajı görmeniz gerekir.

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 öğesinden FHIR kaynaklarını çıkarın

Uygulamayı çalışır duruma getirmek için tüm ihtiyacınız olan bu!

İlerledikçe, başvurunuz boyunca FHIR kaynaklarıyla farklı şekillerde çalışmak isteyebilirsiniz. FHIR kaynaklarını uygulamanızda yerel olarak nasıl depolayacağınızı, yöneteceğinizi ve uzaktaki bir FHIR sunucusuyla nasıl veri senkronize edeceğinizi öğrenmek için Android FHIR SDK'sının FHIR Engine Library'sine göz atın.

İşlediklerimiz

  • Android uygulamanıza Yapılandırılmış Veri Yakalama Kitaplığı ekleme
  • FHIR anketleriyle çalışmak için QuestionnaireFragment ve ResourceMapper nasıl kullanılır?

Sonraki adımlar

  • Yapılandırılmış Veri Yakalama Kitaplığı ile ilgili dokümanları keşfedin
  • Oluşturulan anketlerin görünümünü ve tarzını özelleştirin
  • Yapılandırılmış Veri Yakalama Kitaplığı'nı kendi Android uygulamanızda uygulayın

Daha Fazla Bilgi