Scilla is a mobile app that helps patients find out the right dosage of Baclofen for them. Baclofen is a medicine that can reduce spasticity but may cause tiredness and depression. Scilla allows users to self-report symptoms such as their mood, severity of spasticity, etc. Later on this information will be summarized to help patients find out the right dosage for them.
Expected behaviors
A user can tap on a Report tab at the bottom tab navigator, this will bring them to a screen with a few buttons -- Spasticity, Mood, Daily Evaluation. These buttons are dynamically generated based on the measurementType the user wants to track overtime. This is setup when the user creates a Regimen, that is, a prescribed course of medical treatment. There will always be a Daily Evaluation button at the end. Reporting using Daily Evaluation is outside this task.
Once the user presses on a button, e.g., Spasticity, the app will bring them to a screen to report their severity of spasticity with a few options: Very severe pain, severe pain, moderate pain, mild pain, least pain. (Note that the options may change as we revise our UI design.) Pressing the Mood button will bring them to a similar screen with a set of options to report their mood. After they choose an option, they can click Done, and the system will create a MeasurementObject and store it to the cloud. (You just need to create the object for now, skip the upload to cloud part). The user will then be brought back to the initial report page with a set of reporting options.
An example can be seen below. Note that we want to combine the first two screens into just one.
Task
In this task, you will need to:
Setup dev environment and understand some frameworks:
Setup VSCode, Expo, flow, github
Understand static typing using flow.
Understand run-time debugging in VSCode and with Expo+Chrome Dev Tool.
Understand react-navigation
Create a screen under screens/report/ named ReportSelectionScreen.js, add it to navigation/MainTabNavigator.
Create another screen screens/report/ReportMeasurementScreen.js that will dynamically show the measurement options, the associated scale and create an MeasurementObject.
This screen will take in a prop props.trackedMeasurementTypes, and use this to generate the required view components.
This screen will dynamically swap different view components based on the option selection.
Develop tests for it under screens/report/__tests__ using Jest. The test case should cover selection of different options and check if the view is created correctly as well as the measurement object.
After you've validated everything works correctly, created a PR and assigned to jeffhuang for review. Add label: Need: Review, Done: Validation.
Notes
/libs/intecojs/types.js: This contains the type definition of MeasurementType and a list of MeasurementTypes supported now.
You may need to define scales for different measurement type, put it under /libs/intecojs/constants/measurementScales.js. These scales should be changeable later on.
Background
Scilla is a mobile app that helps patients find out the right dosage of Baclofen for them. Baclofen is a medicine that can reduce spasticity but may cause tiredness and depression. Scilla allows users to self-report symptoms such as their mood, severity of spasticity, etc. Later on this information will be summarized to help patients find out the right dosage for them.
Expected behaviors
A user can tap on a
Report
tab at the bottom tab navigator, this will bring them to a screen with a few buttons --Spasticity
,Mood
,Daily Evaluation
. These buttons are dynamically generated based on themeasurementType
the user wants to track overtime. This is setup when the user creates aRegimen
, that is, a prescribed course of medical treatment. There will always be aDaily Evaluation
button at the end. Reporting usingDaily Evaluation
is outside this task.Once the user presses on a button, e.g.,
Spasticity
, the app will bring them to a screen to report their severity of spasticity with a few options: Very severe pain, severe pain, moderate pain, mild pain, least pain. (Note that the options may change as we revise our UI design.) Pressing theMood
button will bring them to a similar screen with a set of options to report their mood. After they choose an option, they can clickDone
, and the system will create aMeasurementObject
and store it to the cloud. (You just need to create the object for now, skip the upload to cloud part). The user will then be brought back to the initial report page with a set of reporting options.An example can be seen below. Note that we want to combine the first two screens into just one.
Task
In this task, you will need to:
Setup dev environment and understand some frameworks:
Create a screen under
screens/report/
namedReportSelectionScreen.js
, add it tonavigation/MainTabNavigator
.Create another screen
screens/report/ReportMeasurementScreen.js
that will dynamically show the measurement options, the associated scale and create anMeasurementObject
.props.trackedMeasurementTypes
, and use this to generate the required view components.Develop tests for it under
screens/report/__tests__
using Jest. The test case should cover selection of different options and check if the view is created correctly as well as the measurement object.After you've validated everything works correctly, created a PR and assigned to
jeffhuang
for review. Add label:Need: Review
,Done: Validation
.Notes
/libs/intecojs/types.js
: This contains the type definition ofMeasurementType
and a list ofMeasurementTypes
supported now./libs/intecojs/constants/measurementScales.js
. These scales should be changeable later on.