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

1. Başlamadan önce

Neler oluşturacaksınız?

Bu codelab'de, Yapılandırılmış Veri Yakalama Kitaplığı ile Android uygulaması geliştirmeyi öğ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ı ayıklama

Gerekenler

Bu codelab, Yapılandırılmış Veri Yakalama Kitaplığı'na odaklanmış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ı geliştirmediyseniz 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 için başlangıç projesi codelabs/datacapture konumunda bulunuyor.

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 vb.) seçeneğini belirleyin ve daha önce indirdiğiniz kaynak kodundan codelabs/datacapture klasörünü seçin.

Android Studio başlangıç ekranı

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

Projenizi Android Studio'ya aktardığınıza göre, 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, ardından Android Studio araç çubuğunda Çalıştır'ı (Çalıştır düğmesi) tıklayın.

Hello World uygulaması

Gördüğünüz gibi burada çok fazla bir şey yok. Şimdi doğrudan uygulamanızda bir anket görüntülemeye geçelim.

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

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

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.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 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ışıp çalışmadığını kontrol etmek için uygulamayı da 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.

Android Studio da gerekli içe aktarma işlemlerini 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 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 gerekmez, bu nedenle silin. <TextView ile kapanış olan /> arasındaki her şeyi sildiğinizden emin olun.
  5. ConstraintLayout içine bir FragmentContainerView ekleyin. activity_main.xml dosyanız şuna benzer bir görünümde olacaktır:
    <?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 için bir QuestionnaireFragment ekleyin

QuestionnaireFragment öğesinin oluşturulması için JSON kodlu bir FHIR Anketi gerekir. Anket küçük olduğundan (512 KB'tan küçük) parçayı oluşturmak için kullanılacak Bundle bağımsız değişkene String olarak ekleyeceksiniz. Daha büyük anketler, performansı artırmak amacıyla 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, anketi oluşturmak için FHIR Anketi'nin yapısını (veya FHIR ile ilgili herhangi bir şeyi) bilmenize gerek olmamasıdır. Codelab'de bu dosyayı daha yakından inceleyeceğiz.

Oluşturucu'yu kullanarak bir QuestionnaireFragment oluşturun ve belirleyici işleviyle anketi ayarlayın. QuestionnaireFragment öğesini düzen kapsayıcısında görüntülemek için FragmentManager kullanarak bir FragmentTransaction oluşturun.

MainActivity.kt uygulamasını açın ve aşağıdaki kodu MainActivity sınıfına 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ı kullanma hakkında daha fazla bilgi edinin.

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

Emülatörde Oluşturulan Anket

Ankette gezinin ve birkaç yanıt girmeyi deneyin. Boole, metin ve tarih gibi birkaç farklı yanıt widget'ı vardır. Bu widget'lar, orijinal FHIR anketindeki temel türe göre otomatik olarak oluşturulur.

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

Kullanıcıların girdiği yanıtları göremiyorsanız anket çok da yararlı olmaz. 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, anketteki yanıtları QuestionnaireResponse olarak göreceksiniz.

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ırsınız. Bu, doğrudan veya Android FHIR SDK'sının diğer bölümleriyle kullanabileceğiniz bir HAPI FHIR QuestionnaireResponse hatası 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.

Uygulamayı son değişikliklerinizle yeniden oluşturmak için tekrar çalıştırın. Çalıştıktan sonra ankete bazı bilgileri girin ve Gönder'e dokunun. Günlükte, QuestionnaireResponse öğesini JSON olarak içeren bir mesaj göreceksiniz.

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. Bir QuestionnaireResponse

Başlangıç projesine dahil edilen anket, basit bir hasta kayıt akışı içindir. Bu nedenle, anket yanıtlarını kullanarak bu yanıtları temel alan bir FHIR Hasta kaynağı oluşturmak isteyebilirsiniz. Bir anket yanıtından FHIR kaynaklarına dönüşüme 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 gerçekleştirmek için anketiniz, veri ayıklama işleminin nasıl yapılacağı hakkında bilgi içerecek şekilde yazılmalıdır. Neyse ki, örnek anket zaten Tanıma dayalı ayıklama için ayarlanmış.

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, önceki anket JSON dizesini ayrıştırarak oluşturabileceğiniz bir HAPI FHIR Anketi ve daha önce sahip olduğumuz bir QuestionnaireResponse gerekir. Çıkarılan bir veya daha fazla kaynağı (bu örnekte tek bir hasta kaynağı) içeren bir HAPI FHIR işlemi Paketi döndürür.

Uygulamayı son değişikliklerinizle yeniden oluşturmak için tekrar çalıştırın. Çalıştığında bazı bilgileri girip Gönder'e dokunun. Günlükte, çıkarılan FHIR paketinin JSON gösterimini içeren bir mesaj extraction result göreceksiniz.

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

Uygulamanızı hemen kullanmaya başlamak için ihtiyacınız olan bu kadar.

İlerledikçe, başvurunuz boyunca FHIR kaynaklarıyla daha farklı şekillerde çalışmak isteyebilirsiniz. FHIR kaynaklarını uygulamanızda yerel olarak depolayıp yönetmeyi ve verileri uzak bir FHIR sunucusuyla senkronize etmeyi öğrenmek için Android FHIR SDK'sının FHIR Engine Kitaplığı'na göz atın.

İşlediğimiz konular

  • Android uygulamanıza Yapılandırılmış Veri Yakalama Kitaplığı ekleme
  • QuestionnaireFragment ve ResourceMapper, FHIR anketleriyle çalışmak için 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ştirme
  • Yapılandırılmış Veri Yakalama Kitaplığı'nı kendi Android uygulamanıza uygulama

Daha Fazla Bilgi