Code Monkey home page Code Monkey logo

flexion-ads-18f-response's Introduction

Publicly accessible URL: http://pool3.18f.flexion.us

Github repository: https://github.com/flexion/flexion-ads-18f-response

Evaluation branch: master

Approach used to create the prototype

This project represents work done as a part of Flexion Inc.'s (http://flexion.us) response to Pool Three of the GSA RFQ 4QTFHS150004 (Agile Delivery Services). Flexion Inc. is an enterprise IT advising, staffing and digital solutions company serving up lean and agile solutions.

We feel that Flexion practices are very much aligned with the U.S. Digital Services Playbook. Where this narrative provides evidence for that, we have noted with a parenthesized number of the play. For instance, if an item provides evidence of following play 2, it will be noted as (2).

Our choice of prototype was driven by personal experiences of friends, family and team members. Jona Decker was tasked with finding representative users of such a tool and conducting individual interviews via phone. She also interviewed an expert willing to provide insight from a health care provider perspective on the challenges facing caregivers (1). Almost everyone has experienced the frustration of trying to comprehend unfamiliar diagnoses and drug names when dealing with disease or illness in themselves or a loved one. Whether speaking with a physician on the phone or in a physician’s office, it can be challenging to capture and retain drug names, understand their purpose and possible adverse effects, ask intelligent questions and make educated decisions. With existing subject matter expertise on the team, we decided to focus on anti-epileptic agents as our pharmaceutical category of interest, knowing we had access to interview subjects to help define and focus our requirements in a tool to help caregivers better understand anti-epileptic agents and the possible adverse effects associated with them.

Driven by that need, we quickly researched, created and documented a primary persona to better focus all efforts on actual end user needs and goals. A project with a larger scope and longer timeline would typically have a longer definition phase with a larger group of research subjects to help us identify and document additional personas.

Given the abbreviated nature of the delivery, we rapidly assembled an experienced cross-functional team (7) with a clear leader. Brice Ruth was assigned as the accountable leader (6) and quickly acted to set up an appropriate team workflow and technological framework that is described in more detail below. We then began developing the solution via approximately two-day iterations. This is shorter than our typical delivery cycle, which varies by client, but the work breakdown and general project flow is still representative of a typical iteration. In the absence of other constraining factors we would normally advocate for two-week iterations (4).

Initial testing of the prototypes used grey page comps at various viewport sizes, performed by team members with feedback gathered and rolled into successive iterations. As design was layered onto those prototypes, team members continued to test and provide feedback on usability issues including information hierarchy, affordance and accessibility considerations like color contrast and text size (3).

For ease of reviewing our integrated development process we have utilized the GitHub issue tracker, creating tasks for code review, design deliverables, acceptance criteria, infrastructure decisions, infrastructure implementation and of course feature development and test tasks. If you are interested in understanding our process, the information there should provide good insight. However, since github tasks are not in the repository we have extracted a JSON view of them and stored them under revision control in the evidence/issues.json file for review and supporting evidence.

For development and design artifact workflow we used a develop branch and individual features merged via pull requests from feature-specific branches. This was merged to master for evaluation purposes. Feature branches were merged after peer or project lead review and passing unit (Jasmine) and end-to-end (Protractor) tests (4). Continuous integration activity including automated testing was executed via a CircleCI cloud-based CI environment integrated into our GitHub repository (10).

Platform, architecture, technology and framework choices were made during an initial iteration 0 and informed by the constraints of the RFQ. We implemented a fundamentally responsive JavaScript solution with Bootstrap, AngularJS, CoffeeScript and Jade for the frontend and Node.js and Express for the backend (8). Data is accessed from https://open.fda.gov/drug/event/ in a RESTful manner. At Flexion we are long-time advocates of commercially-hardened open source, and have used open technologies to create and host our prototype. This prototype is released under a CC0 license as described in the LICENSE.md file and other components are licensed with MIT, MIT, Apache v2.0, BSD, GPL v2 and GPL v3 licenses (13).

Development-local test environments were automated using Grunt with a revision-controlled Dockerfile available for containerized testing when necessary or for running a standalone environment.

A publicly-accessible instance of the prototype is accessible using the url at the top of this document. It is running in a Docker container on Amazon EC2 infrastructure (9), provisioned via the automated process documented in RUNNING.md file in the root of the repository (11). The publicly-available prototype is monitored continuously using Amazon CloudWatch.

Additional instructions are included in RUNNING.md for running this prototype on another machine, including either a lightweight “grunt serve” approach or a local containerized Docker approach (9).

The creation of this prototype was done in the typical Flexion manner: we take pride in our productivity and had a lot of fun delivering useful functionality in an agile, high-velocity manner as a high-functioning team using modern and open tools. We appreciate the non-traditional approach manifested in this RFQ and are philosophically very aligned with its tenets. We hope to be able to bring our agile skills to bear for the Federal government and 18F.

flexion-ads-18f-response's People

Contributors

bdruth avatar jonadecker avatar loginx avatar npage123 avatar sadlerw avatar scotthasse avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flexion-ads-18f-response's Issues

Bar graph sometimes hides one or more bars

Caused by resizing when in chrome zoom - (110%) Here are some example searches:

test - this is the first one i noticed it on - 1/2 a bar
image

hydrocodone - bar is completely hidden off the area shown
image

Add a disclaimer before data access

The openFDA site states:

We're in beta! openFDA is a beta research project and not for clinical use.

We should pass on that disclaimer before data can be accessed.

Type ahead - doesn't suggest consistently

If I type hydro and hydrocortisone pops up and continue to type cor - the type ahead suggestions intermittently change to strange suggestions and hydrocortisone is gone.

image

image

image

Determine Technology Stack and Setup Application Framework

Discuss technology needs with product owner and determine technology stack for intial prototype based on customer need, team expertise, and delivery platform taking into account best practices and initial performance considerations.

Enter key in search field not submitting the search

Type a drug name in full and press enter and nothing happens. I would expect it to submit the search.

Similarly when arrows are used to select a type ahead drug name and enter is pressed the first time it selects the drug (expected) but then either should submit the search or a second enter should submit the search as a subset of the above issue.

No data result in chart

The default is not particularly friendly. Let's keep this simple with the message:

Sorry! We didn't find any data with that query. Please revise your search and try again.

Bargraph doesn't display months without results

When checking the results of test - the results show Jan/Feb/Apr/June - and therefore nothing is shown for March and May. No results for a given month should probably be displayed as such. If I am searching for the given months and only get one month back (see also search for 'abc') this can be confusing to the user as to why it did not return results for the other months requested.

image

Add missing build-essentials dependency to containers

The following output is showing up in the circle-ci docker builder output:

{ [Error: Command failed: /bin/sh -c make install BINPREFIX="/var/www/node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules/imagemin-pngquant/node_modules/pngquant-bin/vendor"
/bin/sh: 1: make: not found
]
  killed: false,
  code: 127,
  signal: null,
  cmd: '/bin/sh -c make install BINPREFIX="/var/www/node_modules/grunt-contrib-imagemin/node_modules/imagemin/node_modules/imagemin-pngquant/node_modules/pngquant-bin/vendor"' }

This is likely due to the build toolchain package not being installed on the node container image we are using.

Update the container definition to ensure all dependencies are met.

Spinner

show spinners while waiting for network

Define Client API for openFDA Queries

Technical Story

As a user I need to be able perform various searches and queries of the openFDA online data system. The application I will use in my browser or mobile device will need to interface with openFDA through a backend server which will, in turn, send requests to the openFDA system. The api that the client application uses to communicate with this backend needs to be defined based on what inputs/outputs openFDA accepts and are needed for completion of this prototype.

Technical Requirements

  1. API should be REST compliant (or RESTful).
  2. Payloads should be JSON.
  3. Communication should be secure (https).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.