Challenge Overview

INTRODUCTION
This is the first in a series of challenges to develop an iOS app and web portal for Total Mama in partnership with the Bill & Melinda Gates Foundation to track maternal health and fetal growth and development during pregnancy

Total Mama is a new digital health company started and incubated at the University of Oxford whose goal is to provide women with personalized, evidence-based health information on pregnancy and fertility.

The Bill & Melinda Gates Foundation Healthy Birth, Growth, and Development knowledge initiative (HBGDki) seeks to develop data-driven strategies to accelerate their ability to promote healthy birth, growth, and development, in the communities that need it most, by delivering the right interventions to the right child, at the right time, and at the right price.

REQUIREMENTS
You’ll be designing the cloud based architecture that drives the data storage and retrieval for the iOS app and a future web portal.  The technologies chosen for the design are at your discretion, however, they must be able to be deployed to AWS as a production destination.  Data security should be a key concern and clearly reflected in architectural design.

DATA POINTS
The following data points will need to be captured and stored in a secure manner.  As the data has the potential to be shared via Research Kit (and possibly other sources), it must be able to be anonymized when being exported from the system.  Provide a database UML diagram describing tables and relationships.

User, each user of the app will require an account with the following information:
-- Username
-- Password (hashed)
-- First name
-- Last name
-- Email address
-- Opt-out measurement messages (true/false)

Pregnancy, users may have one or more pregnancies in their account and each pregnancy will require the following information:
-- Link to user
-- Date created
-- Estimated date of conception or last known period
-- Metric/Imperial units
-- Consent to share data (true/false)
-- Consent to use Research Kit (true/false)
-- Number of fetuses

Maternal Weight/Height Measurement, mother’s data
-- Link to pregnancy
-- Measurement date
-- Weight Value
-- Height Value

Fetal Measurement, fetus data
-- Link to pregnancy
-- Measurement date
-- Head circumference
-- Abdominal circumference
-- Femur length
-- Ultrasound image (URL to file or binary data)

Measurement Alerts, related to mother and fetal measurements presents useful information based on measurement
-- Measurement type
-- Measurement upper-bound
-- Measurement lower-bound
-- Measurement message

API ENDPOINTS
The following items are the minimum requirements for access via an API.  Please feel free to include any additional items you feel may be useful in the architecture.  Your API should be defined using the OpenAPI Specification and send/receive data in JSON format.
-- User/profile creation/update
-- Pregnancy creation/update
-- Maternal weight measurement creation
-- Fetal measurement creation
-- List of pregnancies by account
-- List of measurements by pregnancy
-- List of alerts by measurement type and upper/lower bounds

-- Means to show pregnancy weight by graphical representation
-- Means to show fetal measurements by graphical representation
-- Anonymized secure data exports to external systems

ADDITIONAL RESOURCES
Please reference the current UI design challenge for additional information regarding the goals and functionality of the iOS app.



Final Submission Guidelines

-- Document describing your architecture approach for the above requirements and how to deploy to the destination environment - AWS must be a deployment option
-- Database UML diagram displaying tables and relationships

-- OpenAPI definition describing the endpoints for the above requirements
-- Sample code or JSON files are helpful but not required

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30053118