1. לפני שמתחילים
מה תפַתחו
ב-Codelab הזה תלמדו איך ליצור אפליקציה ל-Android באמצעות 'ספריית נתונים מובְנים לתיעוד נתונים'. האפליקציה שלך תשתמש בספריית תיעוד הנתונים המובְנים כדי לעבד ולעבד שאלונים ותשובות של FHIR.
מה תלמדו
- איך לשלב את ספריית הנתונים המובְנים באפליקציה ל-Android
- איך להציג שאלון
- איך לקבל תשובות בתור
QuestionnaireResponse
- איך לחלץ משאבי FHIR מ-
QuestionnaireResponse
מה הדרישות כדי להצטרף לתוכנית?
- גרסה עדכנית של Android Studio (גרסה 4.1.2 ואילך)
- Android Emulator או מכשיר Android פיזי
- הקוד לדוגמה
- ידע בסיסי בפיתוח Android ב-Kotlin
ה-Codelab הזה מתמקד בספרייה לתיעוד נתונים מובנים. מושגים ובלוקים של קוד שאינם רלוונטיים מודגשים, וניתן פשוט להעתיק ולהדביק אותם. אם עדיין לא יצרתם אפליקציות ל-Android, אפשר להתחיל בבניית האפליקציה הראשונה.
2. להגדרה
הורדת הקוד
כדי להוריד את הקוד של ה-Codelab הזה, יש לשכפל את מאגר ה-SDK של Android FHIR: git clone https://github.com/google/android-fhir.git
הפרויקט לתחילת העבודה של ה-Codelab הזה נמצא ב-codelabs/datacapture
.
ייבוא האפליקציה אל Android Studio
כדי להתחיל, מייבאים את האפליקציה למתחילים אל Android Studio.
פותחים את Android Studio, בוחרים באפשרות Import Project (Gradle, Eclipse ADT, וכו') ואז בוחרים את התיקייה codelabs/datacapture
מקוד המקור שהורדתם קודם.
הפעלת האפליקציה לתחילת הדרך
עכשיו, אחרי שייבאתם את הפרויקט אל Android Studio, אתם מוכנים להפעיל את האפליקציה בפעם הראשונה.
מחברים את מכשיר Android באמצעות USB למארח, או מפעילים את האמולטור של Android Studio ולוחצים על 'הפעלה' () בסרגל הכלים של Android Studio.
כפי שאפשר לראות, אין כאן הרבה עדיין, אז קדימה, נתחיל להציג שאלון באפליקציה.
3. הוספה של ספריית תיעוד נתונים מובנים לפרויקט
הוספת יחסי התלות לספרייה לתיעוד נתונים מובנים
יחסי התלות של ספריית תיעוד הנתונים המובְנים מאפשרים לשלב את ספריית תיעוד הנתונים המובְנים באפליקציה. יש להוסיף את השורות הבאות בסוף קובץ app/build.gradle.kts
של הפרויקט:
dependencies {
// ...
implementation("com.google.android.fhir:data-capture:1.0.0")
implementation("androidx.fragment:fragment-ktx:1.5.5")
}
סנכרון הפרויקט עם קובצי Gradle
כדי לוודא שכל יחסי התלות זמינים לאפליקציה שלכם, בשלב הזה צריך לסנכרן את הפרויקט עם קובצי Gradle.
בסרגל הכלים של Android Studio, בוחרים באפשרות סנכרון הפרויקט עם Gradle Files (). אתם גם מפעילים שוב את האפליקציה כדי לבדוק אם יחסי התלות פועלים כמו שצריך.
4. הצגת שאלון
בשלב הזה, מוסיפים את הפונקציונליות לאפליקציה לתחילת העבודה כדי לעבד שאלון ב-FragmentContainerView
.
בשלב הבא תוצג ב-Android Studio בקשה להוסיף את פריטי הייבוא הנחוצים:
androidx.core.os.bundleOf
androidx.fragment.app.add
androidx.fragment.app.commit
android.util.Log
com.google.android.fhir.datacapture.QuestionnaireFragment
שלב 1: הוספת FragmentContainerView
צריך להוסיף FragmentContainerView
לפריסה של האפליקציה. כאן יוצגו ה-QuestionnaireFragment
שתיצרו מאוחר יותר.
- פתיחה של
activity_main.xml
(res >Layout > activity_main.xml). - האפשרויות לתצוגות 'קוד', 'פיצול' ו'עיצוב' מוצגות בפינה השמאלית העליונה ב'עורך הפריסה'.
- בוחרים בתצוגת הקוד.
- אין צורך ב-
TextView
, לכן כדאי למחוק. חשוב למחוק את כל הנתונים, החל מ-<TextView
ועד ל-/>
הסוגר. - צריך להוסיף
FragmentContainerView
בתוךConstraintLayout
. הקובץactivity_main.xml
אמור להיראות כך:<?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: הוספה של QuestionnaireFragment
אל FragmentContainerView
כדי לעבד את QuestionnaireFragment
, נדרש שאלון FHIR בקידוד JSON. מכיוון שהשאלון קטן (<512KB), צריך לכלול אותו כ-String
ב-Bundle
של ארגומנטים שישמשו ליצירת המקטע. מטעמי ביצועים, יש לספק שאלונים גדולים יותר כ-URI
.
אפשר לעיין בקובץ questionnaire.json
אם רוצים, אבל אחד היתרונות של 'הספרייה לתיעוד נתונים מובנים' הוא שאין צורך לדעת את המבנה של שאלון FHIR (או כל דבר אחר על FHIR) כדי שהוא יוכל לעבד אותו! הקובץ הזה נבדק בתשומת לב רבה יותר בהמשך ב-Codelab.
יוצרים QuestionnaireFragment
באמצעות הכלי לבניית מודלים, ומגדירים את השאלון באמצעות פונקציית ה-Setter. כדי להציג את QuestionnaireFragment
בתוך מאגר הפריסה, צריך להשתמש ב-FragmentManager
כדי ליצור FragmentTransaction
.
פותחים את MainActivity.kt
ומוסיפים את הקוד הבא למחלקה 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()
)
}
}
מידע נוסף על שימוש במקטעים.
כדי להפעיל את Codelab, לוחצים על 'הפעלה' () בסרגל הכלים של Android Studio. אתם אמורים לראות משהו שדומה לזה:
עליך לעבור על השאלון ולנסות להזין כמה תשובות. נעשה שימוש בכמה ווידג'טים שונים לתשובות, כולל בוליאני, טקסט ותאריכים, שעובדו באופן אוטומטי על סמך הסוג הבסיסי בשאלון FHIR המקורי.
מבחינה טכנית, זה כל מה שצריך לעשות כדי לעבד שאלון! מעולה!
שאלון לא מאוד מועיל אם אין לך אפשרות לראות את התשובות שהמשתמשים סיפקו. עכשיו נעבור לשלב הבא של קבלת תשובה לשאלון!
5. קבלת תשובה לשאלון
בשלבים הקודמים העברנו שאלון FHIR באפליקציה שלך.
בקטע הזה תקבל את התשובות מהשאלון כתשובה לשאלון.
מוצאים את method submitQuestionnaire()
ומוסיפים את הקוד הבא:
// 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)
כדי לקבל את התשובה לשאלון, מאחזרים את קטע השאלון שנוצר קודם לכן ואז משתמשים בשיטה getQuestionnaireResponse()
. הפעולה הזו מחזירה HAPI FHIR QuestionnaireResponse
שניתן להשתמש בו ישירות או עם חלקים אחרים של Android FHIR SDK. ה-Codelab הזה משתמש בספריות HAPI FHIR אחרות כדי להמיר אותו למחרוזת JSON להצגה ביומן.
מפעילים שוב את האפליקציה כדי ליצור אותה מחדש עם השינויים האחרונים. אחרי שהשאלון מופעל, מזינים פרטים מסוימים בשאלון ומקישים על שליחה. ביומן, אמורה להופיע הודעה שמכילה את QuestionnaireResponse
בפורמט 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. חילוץ משאבי FHIR מתגובה לשאלון
השאלון שכלול בפרויקט למתחילים מיועד לתהליך פשוט של רישום מטופלים, ולכן ייתכן שבסופו של דבר תרצו להשתמש בתשובות לשאלון כדי ליצור משאב מטופלים של FHIR שמבוסס עליו. ההמרה הזו מתשובה בשאלון למשאבי FHIR נקראת חילוץ נתונים. ניתן לעשות זאת באמצעות המחלקה ResourceMapper
של ספריית תיעוד הנתונים המובְנים.
כדי לבצע את חילוץ הנתונים, יש להוסיף לשאלון את המידע הנדרש לחילוץ הנתונים. למרבה המזל, השאלון לדוגמה כבר הוגדר לחילוץ מבוסס-הגדרה.
מוצאים את method submitQuestionnaire()
ומוסיפים את הקוד הבא:
lifecycleScope.launch {
val questionnaire =
jsonParser.parseResource(questionnaireJsonString) as Questionnaire
val bundle = ResourceMapper.extract(questionnaire, questionnaireResponse)
Log.d("extraction result", jsonParser.encodeResourceToString(bundle))
}
ל-ResourceMapper.extract()
נדרש שאלון HAPI FHIR, שאותו אפשר ליצור על ידי ניתוח מחרוזת ה-JSON של השאלון קודם, ו-QuestionnaireResponse
שכבר קיבלנו קודם. היא מחזירה חבילה של טרנזקציית HAPI FHIR שמכילה משאב אחד או יותר שחולצו. במקרה הזה, משאב מטופל אחד.
מפעילים שוב את האפליקציה כדי ליצור אותה מחדש עם השינויים האחרונים. כשהבדיקה תסתיים, מזינים כמה פרטים ומקישים על שליחה. ביומן, אמורה להופיע עכשיו הודעה extraction result
שמכילה את ייצוג JSON של חבילת FHIR שחולצה.
D/extraction result: {"resourceType":"Bundle","type":"transaction","entry":[{"resource":{"resourceType":"Patient","identifier":[{"value":"12345"}],"name":[{"family":"Lee","given":["Dani"]}],"birthDate":"1990-02-14"}}]}
7. כל הכבוד!
השתמשת בספריית הנתונים המובְנים לתיעוד נתונים כדי לעבד שאלונים ותשובות ל-FHIR באפליקציה:
- הצגת שאלון
- קבלת תשובה לשאלון
- חילוץ משאבי FHIR מ-
QuestionnaireResponse
זה כל מה שצריך כדי להפעיל אותו!
ככל שתמשיכו, יכול להיות שתרצו לעבוד עם משאבי FHIR בדרכים נוספות. כדאי לעיין בספריית המנועים FHIR של Android FHIR SDK כדי ללמוד איך לאחסן ולנהל משאבי FHIR באופן מקומי באפליקציה שלכם ולסנכרן נתונים עם שרת FHIR מרוחק.
מה נכלל
- איך להוסיף ספרייה לתיעוד נתונים מובנים לאפליקציה ל-Android
- איך משתמשים ב-
QuestionnaireFragment
וב-ResourceMapper
כדי לעבוד עם שאלוני FHIR
השלבים הבאים
- עיין בתיעוד של ספריית התיעוד של הנתונים המובְנים
- להתאים אישית את העיצוב והסגנון של שאלונים שעברו עיבוד
- החלה של ספריית תיעוד הנתונים המובְנים באפליקציה שלכם ל-Android