Skip to content

Commit

Permalink
Initial version of the SDC lib codelab (google#1429)
Browse files Browse the repository at this point in the history
* Initial version of the sdc lib codelab

* Remove unnecessary tests.

* Run spotless apply

* Tidy up codelas/datacapture/.gitignore file

* Add new lines at the end of .gitignore

* Add new line at the end of proguard-rules.pro

* Migrate build.gradle files to kotlin

* Rename app to Structured Data Capture Codelab
  • Loading branch information
jingtang10 authored Jun 4, 2022
1 parent 4bc0da0 commit ec18bba
Show file tree
Hide file tree
Showing 35 changed files with 1,045 additions and 0 deletions.
3 changes: 3 additions & 0 deletions codelabs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Android FHIR SDK Codelabs

* [Structured Data Capture library codelab](https://github.com/google/android-fhir/tree/master/codelabs/datacapture)
4 changes: 4 additions & 0 deletions codelabs/datacapture/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.gradle/
.idea/
build/
local.properties
9 changes: 9 additions & 0 deletions codelabs/datacapture/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
1. Go to `build.gradle` file in the `app` module and add the SDC library and the AndroidX Fragment
library dependencies and sync project
2. Go to `assets` directory under `src/main` and observe the sample questionnaire
3. Modify the layout file of the main activity `activity_main.xml` by adding
a `FragmentContainerView` and removing the `TextView`. The container view is where the
questionnaire will be displayed.
4. Go to `MainActivity.kt` to create a questionnaire fragment that uses the questionnaire JSON file
to display the questionnaire.
5. Run the application.
1 change: 1 addition & 0 deletions codelabs/datacapture/app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
48 changes: 48 additions & 0 deletions codelabs/datacapture/app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
plugins {
id("com.android.application")
id("kotlin-android")
}

android {
compileSdk = 31

defaultConfig {
applicationId = "com.google.android.fhir.codelabs.datacapture"
minSdk = 21
targetSdk = 31
versionCode = 1
versionName = "1.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}

dependencies {
implementation("androidx.core:core-ktx:1.7.0")
implementation("androidx.appcompat:appcompat:1.4.0")
implementation("com.google.android.material:material:1.4.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.2")

// 1.1 Add the Android FHIR SDK"s SDC library
// implementation("com.google.android.fhir:data-capture:0.1.0-beta02")
// 1.2 Add the AndroidX Fragment library
// implementation("androidx.fragment:fragment-ktx:1.3.1")

testImplementation("junit:junit:4.+")
androidTestImplementation("androidx.test.ext:junit:1.1.3")
androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0")
}
21 changes: 21 additions & 0 deletions codelabs/datacapture/app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
24 changes: 24 additions & 0 deletions codelabs/datacapture/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.foodallergy"
>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.FoodAllergy"
>
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* Copyright 2021 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.example.foodallergy

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// 4.1 Create the QuestionnaireFragment
// val fragment = QuestionnaireFragment()

// 4.2 Load the questionnaire JSON from asset file
// val questionnaireJsonString =
// application.assets.open("Questionnaire-food-allergy-questionnaire.json")
// .bufferedReader()
// .use { it.readText() }

// 4.3 Set the questionnaire for the fragment
// fragment.arguments = bundleOf(
// QuestionnaireFragment.EXTRA_QUESTIONNAIRE_JSON_STRING to questionnaireJsonString
// )

// 4.4 Add the questionnaire to the activity
// supportFragmentManager.commit {
// add(R.id.fragment_container_view, fragment)
// }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108"
>
<path
android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"
>
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear"
>
<item android:color="#44000000" android:offset="0.0" />
<item android:color="#00000000" android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000"
/>
</vector>
Loading

0 comments on commit ec18bba

Please sign in to comment.