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
QuestionnaireResponseolarak nasıl yanıt alabilirsiniz?QuestionnaireResponsedosyasından FHIR kaynaklarını ayıklama
İhtiyacınız olanlar
- Android Studio'nun (4.1.2 ve sonraki sürümler) güncel bir sürümü
- Android Emulator veya fiziksel bir Android cihaz
- Örnek kod
- Kotlin ile Android geliştirme hakkında temel düzeyde bilgi sahibi olma
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.

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'ı (
) tıklayın.

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 (
) 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.bundleOfandroidx.fragment.app.addandroidx.fragment.app.commitandroid.util.Logcom.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.
activity_main.xml(res > layout > activity_main.xml) dosyasını açın.- 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.
- Kod görünümünü seçin.

TextViewöğesine ihtiyacınız yok. Bu nedenle, öğeyi silin.<TextViewile kapanış/>arasındaki her şeyi sildiğinizden emin olun.ConstraintLayoutiçineFragmentContainerViewekleyin.activity_main.xmldosyanı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) (
) tıklayarak codelab'i çalıştıralım. Aşağıdakine benzer bir ifade görürsünüz:

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
QuestionnaireResponsedosyası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
QuestionnaireFragmentveResourceMappersimgelerini 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