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
- Anketleri görüntüleme
QuestionnaireResponse
olarak yanıt almaQuestionnaireResponse
dosyasından FHIR kaynaklarını ayıklama
İhtiyacınız olanlar
- Android Studio'nun (4.1.2 ve sonraki sürümler) son sürümü
- Android Emulator veya fiziksel bir Android cihaz
- Örnek kod
- Kotlin'de Android geliştirmeyle ilgili temel bilgiler
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 kullanımınıza sunulmuştur. Daha önce Android uygulaması geliştirmediyseniz ilk uygulamanızı oluşturarak başlayabilirsiniz.
2. Hazırlanın
Kodu indirme
Bu kod alanının 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
adresindedir.
Uygulamayı Android Studio'ya aktarma
Başlatıcı uygulamayı Android Studio'ya içe aktararak başlayalım.
Android Studio'yu açın, Projeyi İçe Aktar (Gradle, Eclipse ADT vb.)'ı seçin ve daha önce indirdiğiniz kaynak koddan codelabs/datacapture
klasörünü seçin.
Başlangıç uygulamasını çalıştırma
Projeyi Android Studio'ya içe aktardığınıza göre uygulamayı ilk kez çalıştırmaya hazırsınız.
Android cihazınızı USB üzerinden 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 çok fazla şey yok. Şimdi 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ı 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.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ı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 () seçin. Bağımlılıkların düzgün çalışıp çalışmadığını kontrol etmek için uygulamayı tekrar da çalıştırabilirsiniz.
4. Anket gösterme
Bu adımda, bir anketi FragmentContainerView
olarak oluşturmak için başlangıç uygulamasına işlevi ekleyeceksiniz.
Bu süreçte Android Studio, 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 bir FragmentContainerView
ekleyin. Daha sonra oluşturacağınız QuestionnaireFragment
burada gösterilir.
activity_main.xml
dosyasını (res > layout > activity_main.xml) açın.- Kod, Bölme 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
'ye ihtiyacınız olmadığı için silin.<TextView
ile kapanış/>
arasındaki her şeyi sildiğinizden emin olun.ConstraintLayout
içine birFragmentContainerView
ekleyin.activity_main.xml
dosyanız aşağıdaki gibi 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
adlı restoranda rezervasyon yaptırmak için JSON kodlamalı bir FHIR Anketi gerekiyor. Anket küçük olduğundan (<512 KB) fragmanı oluşturmak için kullanılacak bir Bundle
bağımsız değişkenine String
olarak dahil edersiniz. 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 bilgiyi) bilmenize gerek kalmadan bu dosyayı oluşturabilmenizdir. Bu dosyaya codelab'in ilerleyen bölümlerinde daha yakından bakacaksınız.
Oluşturucuyu kullanarak bir QuestionnaireFragment
oluşturun ve ayarlayıcı işlevini kullanarak 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
dosyasını açın ve MainActivity
sınıfına aşağıdaki kodu ekleyin:
// Step 2: Configure a QuestionnaireFragment
questionnaireJsonString = getStringFromAssets("questionnaire.json")
val questionnaireFragment =
QuestionnaireFragment.builder().setQuestionnaire(questionnaireJsonString!!).build()
3. Adım: QuestionnaireFragment'i FragmentContainerView'a ekleyin
QuestionnaireFragment
öğesini düzen kapsayıcısında görüntülemek için FragmentManager
kullanarak bir FragmentTransaction
oluşturun. FragmentManager
, daha önce oluşturulan questionnaireParams
öğesini kullanarak örnek oluşturma işlemini yönetir.
MainActivity
sınıfına aşağıdaki kodu 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()
}
Bölüntüleri kullanma hakkında daha fazla bilgi edinin.
Android Studio araç çubuğunda Çalıştır'ı () tıklayarak kod laboratuvarını çalıştıralım. Aşağıdakine benzer bir şey görürsünüz:
Ankete gidin ve bazı yanıtlar girmeyi deneyin. Orijinal FHIR anketindeki temel türe göre otomatik olarak oluşturulan doğru/yanlış, metin ve tarih gibi birkaç farklı yanıt widget'ı kullanılır.
Teknik olarak, anket oluşturmak için yapmanız gereken tek şey bu. Tebrikler!
Kullanıcıların girdiği yanıtları göremiyorsanız anketler çok yararlı olmaz. Anket yanıtı almayla ilgili bir sonraki adıma geçelim.
5. Anket yanıtı alma
Önceki adımlarda, uygulamanızda bir FHIR anketi oluşturdunuz.
Bu bölümde, anket yanıtlarını 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ır ve ardından getQuestionnaireResponse()
yöntemini kullanırsınız. Bu işlem, 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 kod laboratuvarında, günlükte görüntülemek için JSON dizesine dönüştürmek üzere diğer HAPI FHIR kitaplıkları kullanılır.
En son değişikliklerinizle yeniden oluşturmak için uygulamayı tekrar çalıştırın. Anket çalışmaya başladıktan sonra ankete bazı bilgiler girin ve Gönder'e dokunun. Günlükte, JSON olarak QuestionnaireResponse
içeren bir mesaj görürsünüz.
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ı ayıklama
Başlangıç projesine dahil edilen anket, basit bir hasta kaydı 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 yapılan bu dönüşüme veri ayıklama denir. 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 bilgiler içerecek şekilde yazılmış olması gerekir. 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()
için bir HAPI FHIR Anketi gerekir. Bu anketi, daha önceki anket JSON dizesini ayrıştırarak oluşturabilirsiniz. Ayrıca daha önce aldığımız bir QuestionnaireResponse
da gerekir. Bir veya daha fazla ayıklanmış kaynak (bu durumda tek bir Hasta kaynağı) içeren bir HAPI FHIR işlem paketi döndürür.
En son değişikliklerinizle yeniden oluşturmak için uygulamayı tekrar çalıştırın. Çalıştırdıktan sonra bazı bilgileri girip Gönder'e dokunun. Günlükte, ayıklanan FHIR paketinin JSON temsilini 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österme
- Anket yanıtı alma
QuestionnaireResponse
dosyasından FHIR kaynakları ayıklama
Hepsi 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 ve verileri uzak bir FHIR sunucusuyla nasıl senkronize edeceğinizi öğrenmek için Android FHIR SDK'sının FHIR Motoru 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
veResourceMapper
'ü kullanma
Sonraki Adımlar
- Yapılandırılmış Veri Yakalama Kitaplığı 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ıza uygulama