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 almaQuestionnaireResponse
öğesinden FHIR kaynaklarını çıkarma
Gerekenler
- Android Studio'nun (v4.1.2+) yeni bir sürümü
- Android Emülatör veya fiziksel bir Android cihaz
- Örnek kod
- Kotlin'de Android geliştirme ile ilgili temel bilgiler
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.
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'ı () tıklayın.
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 () 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 FragmentContainerView
da 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.
activity_main.xml
dosyasını açın (res > düzen > activity_main.xml).- Düzen Düzenleyici'nin sağ üst köşesinde Kod, Bölme ve Tasarım görünümleri seçeneklerini bulun.
- Kod görünümünü seçin.
TextView
'a ihtiyacınız olmadığı için silin.<TextView
bölümünden kapanışa (/>
) kadar her şeyi sildiğinizden emin olun.ConstraintLayout
içine birFragmentContainerView
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'ı () tıklayarak codelab'i çalıştıralım. Şuna benzer bir sonuç görürsünüz:
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
veResourceMapper
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