Capturez et traitez des données de santé avec la bibliothèque de capture de données structurées

Collecter et traiter des données de santé avec la bibliothèque de capture de données structurées

À propos de cet atelier de programmation

subjectDernière mise à jour : nov. 30, 2024
account_circleRédigé par Jing Tang & William Ito

1. Avant de commencer

Ce que vous allez faire

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
  • Afficher un questionnaire
  • Obtenir des réponses en tant que QuestionnaireResponse
  • Extraire des ressources FHIR à partir d'un QuestionnaireResponse

Prérequis

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 jamais créé d'applications 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épart 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 choisissez le dossier codelabs/datacapture dans le code source que vous avez téléchargé précédemment.

Écran de démarrage d'Android Studio

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 USB ou démarrez l'émulateur Android Studio, puis cliquez sur "Run" (Exécuter) Bouton d'exécution dans la barre d'outils d'Android Studio.

Application Hello World

Comme vous pouvez le constater, il n'y a pas grand-chose pour le moment. Commençons donc à afficher un questionnaire dans votre application.

3. Ajouter la bibliothèque de capture de données structurées au projet

Ajouter les dépendances de 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 d'intégrer la bibliothèque de capture de données structurées à 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.2.0")
    implementation("androidx.fragment:fragment-ktx:1.6.0")
}

Synchroniser votre projet avec les fichiers Gradle

Pour vous assurer que toutes les dépendances sont disponibles pour votre application, vous devez synchroniser votre projet avec les fichiers Gradle à ce stade.

Sélectionnez Sync Project with Gradle Files (Synchroniser le projet avec les fichiers Gradle) Bouton de synchronisation Gradle dans la barre d'outils d'Android Studio. Vous pouvez également exécuter à nouveau l'application pour vérifier que les dépendances fonctionnent correctement.

4. Afficher un questionnaire

À cette étape, vous allez ajouter la fonctionnalité à l'application de démarrage pour afficher un questionnaire dans un FragmentContainerView.

Au fur et à mesure, Android Studio vous invite à 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 l'QuestionnaireFragment que vous créerez plus tard s'affichera.

  1. Ouvrez activity_main.xml (res > layout > activity_main.xml).
  2. Les options associées aux vues Code, Split (Diviser) et Design (Conception) se trouvent en haut à droite de l'éditeur de mise en page.
  3. Sélectionnez la vue Code. Options d'affichage de la mise en page
  4. Comme vous n'avez pas besoin de l'élément TextView, supprimez-le. Veillez à le supprimer entièrement, en commençant par <TextView et en terminant par />.
  5. Ajoutez un FragmentContainerView dans ConstraintLayout. Votre fichier activity_main.xml doit 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: Configurer un QuestionnaireFragment

QuestionnaireFragment nécessite un questionnaire FHIR encodé au format JSON pour s'afficher. Étant donné que le questionnaire est petit (<512 ko), vous l'inclurez en tant que String dans un Bundle d'arguments qui seront utilisés pour créer le fragment. Pour des raisons de performances, les questionnaires plus volumineux doivent être fournis sous forme de URI.

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 (ni quoi que ce soit sur FHIR) pour l'afficher. Vous examinerez ce fichier plus en détail dans la suite de l'atelier.

Créez une QuestionnaireFragment à l'aide de son compilateur, puis définissez le questionnaire à l'aide de la fonction setter. Pour afficher le 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")

val questionnaireFragment =
  QuestionnaireFragment.builder().setQuestionnaire(questionnaireJsonString!!).build()

Étape 3: Ajoutez QuestionnaireFragment à FragmentContainerView

Pour afficher le QuestionnaireFragment dans le conteneur de mise en page, utilisez FragmentManager pour créer un FragmentTransaction. FragmentManager gère l'instanciation à l'aide de l'questionnaireParams créée précédemment.

Ajoutez le code suivant à la classe MainActivity:

// 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()
}

Découvrez comment utiliser des fragments.

Exécutons l'atelier de programmation en cliquant sur "Run" (Exécuter) Bouton d&#39;exécution dans la barre d'outils d'Android Studio. Le résultat doit ressembler à ceci :

Questionnaire affiché dans l&#39;émulateur

Parcourez le questionnaire et essayez de saisir des réponses. Plusieurs widgets de réponse sont utilisés, y compris des valeurs booléennes, du texte et des dates, qui sont affichés automatiquement en fonction du type sous-jacent du questionnaire FHIR d'origine.

Techniquement, c'est tout ce que vous devez faire pour afficher un questionnaire. Félicitations !

Un questionnaire n'est pas très utile si vous ne pouvez pas voir les réponses des utilisateurs. Passons à l'étape suivante pour obtenir une réponse au questionnaire.

5. Obtenir une réponse à un questionnaire

Dans les étapes précédentes, vous avez affiché un questionnaire FHIR dans votre application.

Dans cette section, vous obtiendrez les réponses du questionnaire sous la forme d'un 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 de questionnaire créé précédemment, puis utiliser la méthode getQuestionnaireResponse(). Cela renvoie un QuestionnaireResponse HAPI FHIR 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 le convertir en chaîne JSON à afficher dans le journal.

Exécutez à nouveau l'application pour la recompiler avec vos dernières modifications. Une fois le questionnaire lancé, saisissez des informations dans celui-ci, puis appuyez sur Envoyer. Dans le journal, vous devriez voir un message contenant le 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 des ressources FHIR à partir d&#39;un QuestionnaireResponse

Le questionnaire inclus dans le projet de démarrage est destiné à un flux d'enregistrement de patient simple. Vous pouvez donc utiliser les réponses au questionnaire pour créer une ressource patient FHIR en vous basant sur elles. Cette conversion d'une réponse à un questionnaire en ressources FHIR s'appelle extraction de données. Pour ce faire, nous pouvons utiliser la classe ResourceMapper de la bibliothèque de capture de données structurées.

Pour effectuer l'extraction de données, votre questionnaire doit inclure des informations sur la manière de procéder. Heureusement, l'exemple de questionnaire est déjà configuré pour l'extraction basée sur la définition.

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 HAPI FHIR, que vous pouvez créer en analysant la chaîne JSON du questionnaire précédente, ainsi qu'un QuestionnaireResponse, que nous avons déjà obtenu précédemment. Il renvoie un Bundle de transaction HAPI FHIR contenant une ou plusieurs ressources extraites, dans ce cas une seule ressource Patient.

Exécutez à nouveau l'application pour la recompiler avec vos dernières modifications. Une fois l'application lancée, 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 Structured Data Capture Library pour traiter les questionnaires et les réponses FHIR dans votre application:

  • Afficher un questionnaire
  • Obtenir une réponse à un questionnaire
  • Extraire des ressources FHIR à partir d'un QuestionnaireResponse

C'est tout ce dont vous avez besoin pour le mettre en service.

Au fur et à mesure, vous souhaiterez peut-être utiliser les ressources FHIR de différentes manières dans votre application. Consultez la bibliothèque FHIR Engine du SDK Android FHIR pour découvrir comment stocker et gérer localement des ressources FHIR 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
  • Utiliser QuestionnaireFragment et ResourceMapper pour travailler avec des questionnaires FHIR

Étapes suivantes

  • Consulter la documentation de la bibliothèque de capture de données structurées
  • Personnaliser l'apparence des questionnaires affichés
  • Appliquer la bibliothèque Structured Data Capture Library dans votre propre application Android

En savoir plus