1. Avant de commencer
Objectifs de l'atelier
Dans cet atelier de programmation, vous allez apprendre à créer une application Android avec la bibliothèque de capture de données structurées. Votre application utilisera la bibliothèque de capture de données structurées pour afficher et traiter les questionnaires et les réponses FHIR.
Points abordés
- Intégrer la bibliothèque de capture de données structurées à votre application Android
- Comment présenter un questionnaire
- Comment obtenir des réponses en tant que
QuestionnaireResponse
- Extraire les ressources FHIR d'un
QuestionnaireResponse
Ce dont vous avez besoin
- Une version récente d'Android Studio (v4.1.2 et versions ultérieures)
- Android Emulator ou un appareil Android physique
- Exemple de code
- Vous disposez de connaissances de base en développement Android en Kotlin.
Cet atelier de programmation est consacré à la bibliothèque de capture de données structurées. Les concepts et les blocs de codes non pertinents ne sont pas abordés, et vous sont fournis afin que vous puissiez simplement les copier et les coller. Si vous n'avez pas encore créé d'application Android, vous pouvez commencer par créer votre première application.
2. Configuration
Télécharger le code
Pour télécharger le code de cet atelier de programmation, clonez le dépôt du SDK Android FHIR: git clone https://github.com/google/android-fhir.git
Le projet de démarrage de cet atelier de programmation se trouve dans codelabs/datacapture
.
Importer l'application dans Android Studio
Commençons par importer l'application de démarrage dans Android Studio.
Ouvrez Android Studio, sélectionnez Import Project (Gradle, Eclipse ADT, etc.) (Importer un projet (Gradle, Eclipse ADT, etc.)), puis le dossier codelabs/datacapture
dans le code source que vous avez téléchargé précédemment.
Exécuter l'application de démarrage
Maintenant que vous avez importé le projet dans Android Studio, vous êtes prêt à exécuter l'application pour la première fois.
Connectez votre appareil Android à votre hôte via un câble USB, ou démarrez l'émulateur Android Studio et cliquez sur Exécuter () dans la barre d'outils Android Studio.
Comme vous pouvez le constater, il n'y a encore que peu de choses à faire. Voyons donc comment afficher un questionnaire dans votre application.
3. Ajouter la bibliothèque de capture de données structurées au projet
Ajouter les dépendances pour la bibliothèque de capture de données structurées
Les dépendances de la bibliothèque de capture de données structurées vous permettent de l'intégrer à votre application. Ajoutez les lignes suivantes à la fin du fichier app/build.gradle.kts
de votre projet:
dependencies {
// ...
implementation("com.google.android.fhir:data-capture:1.0.0")
implementation("androidx.fragment:fragment-ktx:1.5.5")
}
Synchroniser votre projet avec les fichiers Gradle
Pour vous assurer que toutes les dépendances sont disponibles pour votre application, vous devez à ce stade synchroniser votre projet avec les fichiers Gradle.
Sélectionnez Sync Project with Gradle Files (Synchroniser le projet avec les fichiers Gradle) () dans la barre d'outils d'Android Studio. Vous devrez également exécuter à nouveau l'application pour vérifier que les dépendances fonctionnent correctement.
4. Afficher un questionnaire
Au cours de cette étape, vous allez ajouter à l'application de démarrage la fonctionnalité permettant d'afficher un questionnaire dans un FragmentContainerView
.
Au fur et à mesure, Android Studio vous invitera à ajouter les importations nécessaires:
androidx.core.os.bundleOf
androidx.fragment.app.add
androidx.fragment.app.commit
android.util.Log
com.google.android.fhir.datacapture.QuestionnaireFragment
Étape 1: Ajoutez un FragmentContainerView
Ajoutez un FragmentContainerView
à la mise en page de l'application. C'est ici que s'affichera le QuestionnaireFragment
que vous créerez ultérieurement.
- Ouvrez
activity_main.xml
(res > layout > activity_main.xml). - Les options des vues "Code", "Split" (Diviser) et "Design" (Conception) se trouvent en haut à droite de l'éditeur de mise en page.
- Sélectionnez la vue Code.
- Vous n'avez pas besoin de l'élément
TextView
. Vous devez donc le supprimer. Veillez à le supprimer entièrement, en commençant par<TextView
et en terminant par/>
. - Ajoutez un
FragmentContainerView
dansConstraintLayout
. Votre fichieractivity_main.xml
devrait se présenter comme suit:<?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>
Étape 2: Ajoutez un QuestionnaireFragment
au FragmentContainerView
QuestionnaireFragment
a besoin d'un questionnaire FHIR encodé au format JSON pour s'afficher. Étant donné que le questionnaire est de taille réduite (moins de 512 Ko), vous devez l'inclure en tant que String
dans un Bundle
d'arguments qui sera utilisé pour créer le fragment. Les questionnaires plus volumineux doivent être fournis en tant que URI
pour des raisons de performances.
Vous pouvez consulter le fichier questionnaire.json
si vous le souhaitez, mais l'un des avantages de la bibliothèque de capture de données structurées est que vous n'avez pas besoin de connaître la structure du questionnaire FHIR (ou quoi que ce soit sur FHIR) pour le rendre. Vous examinerez ce fichier plus en détail dans la suite de cet atelier de programmation.
Créez un QuestionnaireFragment
à l'aide de son compilateur et définissez le questionnaire à l'aide de la fonction setter. Pour afficher QuestionnaireFragment
dans le conteneur de mise en page, utilisez FragmentManager
pour créer un FragmentTransaction
.
Ouvrez MainActivity.kt
et ajoutez le code suivant à la classe MainActivity
:
// 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()
)
}
}
Découvrez comment utiliser des fragments.
Exécutons l'atelier de programmation en cliquant sur Exécuter () dans la barre d'outils d'Android Studio. Le résultat doit ressembler à ceci :
Parcourez le questionnaire et essayez de saisir quelques réponses. Différents widgets de réponse sont utilisés, y compris des valeurs booléennes, du texte et des dates, qui ont été affichés automatiquement en fonction du type sous-jacent dans le questionnaire FHIR d'origine.
Techniquement, c'est tout ce que vous avez à faire pour afficher un questionnaire. Félicitations !
Un questionnaire n’est cependant pas très utile si vous ne pouvez pas voir les réponses saisies par les utilisateurs. Passons à l'étape suivante, qui consiste à obtenir une réponse au questionnaire !
5. Obtenir une réponse au questionnaire
Lors des étapes précédentes, vous avez affiché un questionnaire FHIR dans votre application.
Dans cette section, vous recevrez les réponses du questionnaire sous forme de QuestionnaireResponse.
Recherchez la méthode submitQuestionnaire()
et ajoutez le code suivant:
// 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)
Pour obtenir la réponse au questionnaire, vous devez récupérer le fragment du questionnaire créé précédemment, puis utiliser la méthode getQuestionnaireResponse()
. Cette commande renvoie un fichier HAPI FHIR QuestionnaireResponse
que vous pouvez utiliser directement ou avec d'autres parties du SDK Android FHIR. Cet atelier de programmation utilise d'autres bibliothèques HAPI FHIR pour la convertir en chaîne JSON à afficher dans le journal.
Exécutez à nouveau l'application pour la recréer avec vos dernières modifications. Une fois le questionnaire lancé, saisissez des informations dans le questionnaire, puis appuyez sur Envoyer. Dans le journal, vous devriez voir un message contenant QuestionnaireResponse
au format JSON.
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. Extraire les ressources FHIR d'un questionnaire QuestionnaireResponse
Le questionnaire inclus dans le projet de démarrage est destiné à un flux simple d'inscription des patients. À terme, vous pouvez donc utiliser les réponses au questionnaire pour créer une ressource patient FHIR basée sur celles-ci. Cette conversion d'une réponse à un questionnaire à des ressources FHIR est appelée extraction de données. Pour ce faire, utilisez la classe ResourceMapper
de la bibliothèque de capture de données structurées.
Pour que vous puissiez extraire des données, votre questionnaire doit contenir des informations sur la façon de procéder. Heureusement, l'exemple de questionnaire est déjà configuré pour une extraction basée sur des définitions.
Recherchez la méthode submitQuestionnaire()
et ajoutez le code suivant:
lifecycleScope.launch {
val questionnaire =
jsonParser.parseResource(questionnaireJsonString) as Questionnaire
val bundle = ResourceMapper.extract(questionnaire, questionnaireResponse)
Log.d("extraction result", jsonParser.encodeResourceToString(bundle))
}
ResourceMapper.extract()
nécessite un questionnaire FHIR HAPI, que vous pouvez créer en analysant la chaîne JSON du questionnaire plus tôt, et un QuestionnaireResponse
, que nous avons déjà obtenu précédemment. Elle renvoie un Bundle de transaction FHIR HAPI contenant une ou plusieurs ressources extraites, dans ce cas une seule ressource Patient.
Exécutez à nouveau l'application pour la recréer avec vos dernières modifications. Une fois qu'il est en cours d'exécution, saisissez des informations et appuyez sur Envoyer. Dans le journal, vous devriez maintenant voir un message extraction result
contenant la représentation JSON du bundle FHIR extrait.
D/extraction result: {"resourceType":"Bundle","type":"transaction","entry":[{"resource":{"resourceType":"Patient","identifier":[{"value":"12345"}],"name":[{"family":"Lee","given":["Dani"]}],"birthDate":"1990-02-14"}}]}
7. Félicitations !
Vous avez utilisé la bibliothèque de capture de données structurées pour traiter les réponses et les questionnaires FHIR dans votre application:
- Afficher un questionnaire
- Obtenir une réponse au questionnaire
- Extraire les ressources FHIR d'un
QuestionnaireResponse
Vous n'avez besoin de rien d'autre pour le rendre opérationnel !
Au fur et à mesure, vous souhaiterez peut-être travailler avec les ressources FHIR de différentes manières dans l'ensemble de votre application. Consultez la bibliothèque de moteurs FHIR du SDK Android FHIR pour apprendre à stocker et à gérer des ressources FHIR localement dans votre application et à synchroniser des données avec un serveur FHIR distant.
Points abordés
- Ajouter la bibliothèque de capture de données structurées à votre application Android
- Comment utiliser
QuestionnaireFragment
etResourceMapper
pour travailler avec des questionnaires FHIR
Étapes suivantes
- Explorer la documentation de la bibliothèque de capture de données structurées
- Personnaliser l'apparence des questionnaires rendus
- Appliquer la bibliothèque de capture de données structurées à votre propre application Android