reach final submission scalability and sustainability · judges will consider and evaluate whether...

33
REACH F Your app grand pri submissi plans. Th Monmou ongoing Scalabilit Scalabilit State of N a. P b. If st ca c. Ex Sy d d. If st Please lim Qbase’s regions requirem include: inal Submiss p’s scalability ize. The jud ons. To jud his form is yo uth County, use. ty ty refers to h New Jersey. lease explai f your app ha trategy for a apabilities o xplain how y ystems (HM ifferent plat f you do not trategy you mit your res application, beyond Red ments. We cu A databa An autom including enhance, sion – Scala y, sustainabi ges will eval dge scalabilit our opportu New Jersey how well, ho n how much as plans to s achieving tha f your app w your app wil IS) across th tforms. plan to use use. sponse to 1, Homeless RE d Bank, NJ. urrently serve se containing mated Extrac: flat files, d and update bility and Su lity, comple luate comple ty and sustai unity to expla and then pe ow quickly, a h of the coun erve more g at scale, incl will not be sc l interact wi he country at HMIS datab 500 words. Figure 1: Pro EACH, was or Our platfore the entire U g over 110,00 t, Transformata warehou the database ustainability teness, and eteness and nability, how ain how wel ersists as a fr and how com ntry your ap geographies uding how q caled up. ith the Home t local Conti ases for she oject REACH Arc riginally desig m is flexible United States 0 services acr , and Load (E use sites, and on an hourly y user experie user experi wever, we w l and how q ree service t mpletely you p serves tod after the co quickly it wil elessness M nuums of Ca elter bed ava hitecture gned as a pla e and can b and our scalross the coun ETL) process d standard w y or daily basence will det ence when t will need you uickly your a o people acr ur app serves day. ompetition, p l occur and w Management are that use ailability, ple atform to sup be scaled to ability featur ntry. that accesse websites to c is. termine if it testing your u to summar app scales b ross the cou s people bey please expla whether any Information systems run ease describe pport geogra o meet new es and capab es over 12 so continuously wins the r final rize your eyond untry for yond the ain your y n nning on e the phical data bilities ources mine,

Upload: others

Post on 19-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

REACH F Your appgrand prisubmissiplans.  ThMonmouongoing  ScalabilitScalabilitState of N

a. Pb. If

stca

c. ExSyd

d. Ifst

Please lim

 Qbase’s regions requireminclude: 

inal Submiss

p’s scalabilityize.  The judons.   To judhis form is youth County, use. 

tyty refers to hNew Jersey. lease explaif your app hatrategy for aapabilities oxplain how yystems (HMifferent platf you do not trategy you 

 mit your res

application, beyond  Red

ments. We cu

A databa

An automincludingenhance,

sion – Scala

y, sustainabiges will evaldge scalabilitour opportuNew Jersey 

how well, ho  n how muchas plans to sachieving thaf your app wyour app wilIS) across thtforms. plan to use use. 

sponse to 1,

Homeless REd  Bank,  NJ. urrently serve

se containing

mated Extract:  flat  files,  d and update t

bility and Su

lity, compleluate complety and sustaiunity to explaand then pe

ow quickly, a

h of the counerve more gat scale, inclwill not be scl interact wihe country at

HMIS datab

500 words.

Figure 1: Pro

EACH, was orOur  platform

e the entire U

g over 110,00

t, Transform,ata warehouthe database

ustainability

teness, and eteness andnability, howain how welersists as a fr

and how com

ntry your apgeographiesuding how qcaled up. ith the Homet local Conti

ases for she

oject REACH Arc

riginally desigm  is  flexibleUnited States 

0 services acr

, and  Load  (Euse  sites,  and on an hourly

user experie user experiwever, we wl and how qree service t

mpletely you

p serves todafter the coquickly it wil

elessness Mnuums of Ca

elter bed ava

hitecture 

gned as a plae  and  can  band our scala

ross the coun

ETL) process d  standard wy or daily basi

ence will detence when t

will need youuickly your ao people acr

ur app serves

day.   ompetition, pl occur and w

Management are that use 

ailability, ple

atform  to supbe  scaled  toability featur

ntry. 

that accessewebsites  to  cis. 

termine if it testing youru to summarapp scales bross the cou

s people bey

please explawhether any

Informationsystems run

ease describe

pport geograo  meet  new es and capab

es over 12  socontinuously 

wins the r final rize your eyond untry for 

yond the 

ain your y 

n nning on 

e the 

 

phical data 

bilities 

ources mine, 

Page 2: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

  

2

Job Search capability queries and aggregates jobs from over five unique sources including: NRD, CareerBuilder, Indeed, and SimplyHired. 

The application allows a user to search for information from anywhere in the United States with two search options:  

o Search based on current device location. o Search by entering a complete or partial address (such as city and state or zip code) 

for services near designated location. 

The  application  gives  the  user  the  ability  to  “bookmark”  a  shelter  and  receive  “push notifications” regarding availability on any or all of the user’s devices (Android or iOS). 

The ability to add,  update, and capture new data on places from our website including the ability to capture descriptions of intake processes and key contacts for reserving beds at a specific shelter 

 The Homeless REACH database currently contains over 110,000 services across the country. This data has come from a variety of websites and sources. An automated process in our platform continuously mines,  enhances,  and  updates  our  database  on  a  daily  or  hourly  basis  depending  on  the  data  and source.  At  present  current  data  categories  includes:  Shelters,  Food  Banks,  Hospitals,  VA  Facilities, transportation, legal assistance, job assistance, and jobs for the entire United States.  An advantage of our ETL process  is  the easy addition of new data and  service  types without major modifications  to  the  Homeless  REACH  application  itself.  This  allows  for  the  addition  of  more information and service types if a new need should arise.    As an example, during our First Beta Test in Red Bank, NJ, we received feedback from The Soul Kitchen and  the volunteers at  Lunch Break and Monmouth Resource Center. They  suggested other areas of data  that we  should  capture  to make  the Homeless  REACH  application more  complete  and  useful. Based  on  that  feedback we  added  new  data  sources  for:  Employment  Assistance  resources, Utility Assistance, and more hotline information to our database. We were able to do so without needing to change  our  application  platform  and  only  had  to  identify  the  data  sources  and  create  new  ETL processes.  Assistance  Services was  a  new  service  type  and,  as  such,  required  a  new  screen  to  the applications to display this new service type information.  Homeless Information Management Systems (HMIS)  We recognize that HMIS is the ideal place to collect information and recommend it be the standard for managing  and  disseminating  bed  count  information.    Our  Homeless  REACH  platform  is  capable  of supporting the HUD XML Schema Definition for HMIS Data, version 3.0.   After discussions with groups  in Los Angeles, CA, and the Arlington, VA Continuum of Care (CoC) who support the homeless and veteran communities, we recognize that access to HMIS  information  is not easy for a third party entity and requires the support of larger entities, such as the VA or HUD, to make this data available to the public.   One specific reason we were given for not being able to access the data directly as a  third party public application  is  the data  that  is  collected within  the HMIS  system contains Personal Identifiable Information.  With access to the local HMIS system, our Homeless REACH platform  can  either  receive  XML messages  or  query HMIS  system  databases  to  keep  the Homeless REACH application bed counts up‐to‐date and searchable.   During our visit to Red Bank, NJ, we learned that many shelters update the New Jersey HMIS when they have the opportunity to do so versus being a real‐time count.  In support of potential ways to improve the timing and dissemination of data to caregivers of bed counts we have implemented two innovative features:   

Page 3: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

  

3

“Shelter Bed” Application ‐ This allows shelters to register through our website and gives them the ability to manage bed counts in real time through the web or through a device application.  This  simple  interface  allows  shelters  to  change bed  count numbers  as people  come  and  go from the facility.   This may improve the way data is collected, and may be a future expansion point to support reporting of this data to the CoC HMIS system through an automated process. 

Push  Notifications  ‐  This  gives  the  user  the  ability  to  “bookmark”  a  shelter  and  receive notifications when  the  shelter has bed availability. We  created  this  feature  in  response  to a current need to search for beds actively and to see  if there  is availability at a specific facility.  By providing a push notification feature, we allow a caregiver or person helping the homeless to  automatically  receive  availability  changes  versus  them  having  to  manually  monitor availability. 

 

SustainabilityThe goal of Project REACH is a free app that is widely available so that as many people as possible experiencing homelessness and working with the programs that serve the homeless can get help.  Please describe how you plan to sustain your app long‐term as a free service after the contest ends.  Judges will consider and evaluate whether your proposed strategy is practical and achievable. 

 Please limit your response to 1,000 words. Qbase is committed to releasing the iOS and Android versions of the Homeless REACH application at no charge to the public Apple App Store and Google Android Marketplace at the end of the second Beta test  phase  and  prior  to  final  judging  of  the  Project  REACH  contest.  The  website, https://homelessreach.info, has been live since our original submission and is accessible to anyone via a web browser.   We recognize funding will be required in order to: sustain the applications; add additional data sources HMIS systems; provide maintenance and improvement of the apps; and to support the website. As part of  this understanding, Qbase has  limited  the  infrastructure  costs by hosting  the  servers  required  to push data to the apps and website within our data center located in Dayton, Ohio. This offers several advantages because  it allows us  to  leverage Qbase’s current capabilities  for  internet access, cooling, power, and processing time. It eliminates the need to pay for private or public cloud hosting, which can grow and become costly as the number of users and data sources  increases during a national rollout. We  are  confident  Qbase’s  current  server  and  equipment,  which  is  running  the  Homeless  REACH platform, can support between 10,000 and 25,000 concurrent users at any given time.   In addition, Qbase looked at the type advertisements displayed on similar sites and apps, as well as, current sites that host shelter and food bank information to understand their model. We also investigated in‐app advertising, which we believe would be the most frequently used form of the Homeless REACH platform, and evaluated whether ads could be placed in the app. Our analysis demonstrated that both the website and in‐app advertising distracts from the user experience and defeated the purpose of obtaining accurate data quickly. Moreover, since advertisement links typically only reimburse a few cents per click, they would not generate enough revenue to sustain the application in the manner the VA is seeking.  As a  result, Qbase has  researched  sponsorship based advertising  from  system  integrators and other commercial companies. Using this model, entities could make donations to Project REACH.  In return, they would receive prominent logo placement and links to their website describing their support of the VA and HUD initiatives to end homelessness within the application. This model is similar to other self‐funded  initiatives,  such  as  the Maui  Economic  Development  Board, where  companies  sponsor  the board by paying yearly dues at different tier levels. Each tier level allows the company to be promoted 

Page 4: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

  

4

in the community and  the  funds are used to develop and promote growth  in the area. Furthermore, this approach would not disrupt or distract the user experience.  For REACH,  tier  levels will be based on  the  company’s  size and  they would  receive  the promotional rights  to  affiliate  themselves  with  this  important  initiative.  Donations  are  then  held  in  an  escrow account  so  funds  to  further develop  and maintain  the  application  are  readily  available.  In  addition, excess  funds  in  the  account  would  be  donated  to  homeless  charities  or  rolled  over  to  provide continued sustainment of the application platform at the end of each year.   We have already  reached out  to  several  companies,  including SAIC, Northrop Grumman, Booz Allen Hamilton,  SRA  International, PSI, 7Delta,  and  the BITS Group,  and  all of  them have  expressed  their interest to learn more about this opportunity to support the VA. We predict this model could generate at  least 60% of the funds required for continued development of the application and sustain the app over the next couple of years.    Our research and conversations with CoCs in Arlington, VA and Los Angeles, CA have also revealed that long term community adoption and access to HMIS data to support Shelter Bed Availability will require government support from the VA or HUD.  Specifically, in conversations with Arlington about accessing their HMIS data,  it was noted that HMIS systems contain Personal Identifiable Information (PII) about the homeless. This would make  it very difficult, and even unlikely,  for an  independent  third party  to communicate directly with their system. However, Qbase believes having an agency like the VA or HUD sponsor the app as part of an initiative to assist the homeless would supply the required visibility and influence for the CoCs and HMIS repositories to provide the data required to support and sustain the app.  Qbase  believes  a  combination  of  government  support  and  private  company  donations  is  the most viable  solution  for  supporting  the ongoing development, upkeep,  and expansion of  this  app  for  full national deployment.   As  part  of  the  app  sponsorship,  Qbase  would make  the  application  webservices  and  source  code available to the Open Source community to allow the platform to become the Government Resource for other applications. In this manner the VA and HUD would become the central authority and registry for these types of services because it provides the most accurate resource for other apps and services that may be developed beyond the REACH community. For example, the data collected and stored  in the REACH platform  for Transportation,  Legal, VA Facilities, and Health Facilities,  can be adopted  in other planned applications issued by the Government as part of broader mobile application strategies.   Overall, Qbase is committed to sustaining the application and maintaining the application as a free and open  resource  for  the  public  to  use  through  this  approach.    Our  conversations  with  caregivers, including the visits we made to the Soul Kitchen, Lunch Break, and Monmouth Resource Center, as well as our discussions with the CoC  in Arlington, VA  in Los Angeles, CA, have further confirmed the need and potential value this kind of app would provide.  

 

Page 5: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

How will your app ensure functional performance as you scale? Throughout the Project REACH contest, Qbase has architected its platform using enterprise design best practices and principles. Moreover, we understand that performance in this design is measured by the User and their perceptions and experiences with our applications. Therefore, Qbase has been working to maintain and in some cases improve performance of our platform to account for the expected influx of new users upon release and the continually growing amounts of data we have been collecting on places and services. The following techniques are employed in our platform to ensure scalability and performance:

Asynchronous Processes

REST Services

Caching

Hardware and Software Tuning

Load Balancing and Clustering

Asynchronous Processes. On the data side, we built automated Extract Transform and Load (ETL) processes that mine the registry, databases, and webservices providing the Place and Service data presented in our mobile and web applications. The ETL process runs independently on our servers and populates our database asynchronously with new data. The ETL process performs the data clean up and geocoding function allowing the mobile applications to search based on GPS location or by full or partial address. These processes run autonomously during low-peak times, e.g., early morning hours. Loading failures are pushed to a database table and can be manually acted upon by an administrator for retry. These failures are typically address parsing errors or invalid addresses causing a geocode failure. Both of these failures can be corrected and remembered so as not to happen during subsequent ETL processes. Currently we have approximately 110,000 places and services across the country with fewer than 5% failures. REST Services. Our REST services are designed to handle performance of mobile devices by offering the ability to “page” or retrieve subsets of results. This feature allows apps to pull small amounts of relevant data at a time versus pulling everything all at once, which can cause performance problems as more data is added. Within the iOS and Android application, we have implemented several performance strategies that enable the app to handle the large amount of data available while maintaining usability for the end user. As an example, both our iOS and Android application use the “paging feature” of the REST service to pull small sets of data at a time from the server based on the search performed by the user. When the user “scrolls” to the end of the fetched set of data, the apps automatically fetch the next set in the background. This performance technique allows a user to search, retrieve, and pull data quickly in a responsive manner. This also reduces the amount of data, pulled by the App at any given time, limiting the impact on user data plans by not receiving the entire database for each search performed.

Page 6: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

As another example of functional optimization within the apps, we use a technique called “lazy loading” for all images displayed in the search results. This technique provides the ability to quickly fetch the text portion of the search results separate from the images. Images are pulled when a specific result is displayed on the screen through a background thread process. This provides Homeless REACH two functional performance advantages: Fast Loading of Textual Data and Asynchronous Loading of Larger Image and Binary Data. Text is smaller in size than image data, so by sending the text portions of the results separate from the images, the information can be retrieved much faster than pushing both at once. By only loading images when the result is displayed by the user reduces the amount of data consumed by the end user device to which reduces total memory usage and speeds up the responsiveness of the app thereby enhancing the user experience. Another feature that we have implemented that helps users with the functional performance is the ability to filter results to only display places and services that meet certain criteria. This feature provides three key benefits to the end user.

First, by allowing users to search for places and services using criteria such as a search radius, name, open bed availability, or specific shelter type, this limits the result set returned to a narrow and specific set of data versus returning all data all the time.

Second, by using the filters, the amount of data pushed to the device is smaller resulting in very fast response times which enhances the user experience.

Third, our data model which supports this function allows for future growth and expansion as we can add more filters and metadata through configuration allowing for more detailed or enhanced searching to occur in the future.

This ultimately means we can provide more ways for a user to find specific services within a geographic region by providing them with more options to search and retrieve data. Caching. The Homeless REACH platform uses “caching”, the storing of information retrieved from external services locally in our database, to speed up the servicing of REST requests. For example, our platform offers location based searches in both its mobile and web applications. Location based services require a geocoding engine and a reverse geocoding engine. The geocoding engine takes a partial or full address and provides a latitude and longitude. The reverse geocoding engine takes a latitude and longitude and provides a partial or full address. Both processes require a high amount of system resources. In some cases, both processes are limited to the number of requests allowed per day; an example is Google Maps API is limited to 25k requests a day. Our platform uses a cache to store a latitude and longitude for a requested address and as such the same cache also makes that address available to the reverse geocoding engine. Therefore, our use of caching curtails system resource usage and mitigates hitting any request limitation ceilings. Hardware and Software Tuning. We utilize a large, multi-processor server to house the services, database, and application server for Homeless REACH. This server has been tuned to handle up to 20-30,000 concurrent users, pulling information from the REST services from their mobile devices or via the internet through the website.

Page 7: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

The Qbase Homeless REACH platform is currently running on mostly open source software including Apache HTTP server, Glassfish Application Server, and PostgreSQL Relational Database Server with the PostGIS extension. These services are popular, widely used, and performance tuning documentation is plentiful. We have used the documentation to performance tune the applications accordingly. Load Balancing and Clustering. Our platform can be load balanced and clustered. As mentioned above, we are using Apache, Glassfish and PostgreSQL, each of which is clusterable. We are currently using load balancing to separate the ETL processes and the User’s use of the REST services. They are currently in two different Glassfish domains, the ETL processes use one domain while the User applications use the other, both pointing at the same database. Will you be tracking information about app usage or about the app’s users? Qbase understands the concerns of privacy and use of individuals’ information that could be gathered from the use of a mobile or web applications. Therefore our applications do not track or keep any information about a user within the Homeless REACH platform. From an app usage standpoint, we are using Google Analytics to track the REST services used and the performance of the application and responsiveness of the system. This information is anonymous in that it cannot be tracked back to any user. What it does provide is the average load statistics on our servers and usage patterns, including response times of both the website and REST services. This information provides us with useful guidance on where issues are and areas where we can improve the user experience. When the apps are released to the public through the Apple Store and Google Play, we will be able to track how many times the iOS and Android apps have been downloaded. Will you be tracking the information, location, and/or identity of the user? No, our application platform is “stateless” in the sense we do not store, log, or cache any information about a specific user of the app or the queries they are making. Our Homeless REACH app also does not require a login to use, so we have no information on a user who has downloaded and is using the app. When the user makes a query for resources near a location the app will send the REST service a latitude/longitude or full or partial address so that places and services can be found near that location. However, the REST service does not track, store, or receive any information about the user calling the REST service. For device notifications, we are using the Apple Push Notification Service and the Google Cloud Messaging services. The use of these messaging services abides by the terms of services and strictly adheres to the suggested coding practices of both Apple and Google with respect to privacy concerns and the ability to provide device notifications. To use these services, we receive a unique token (not the device UUID which is identifiable) from Apple or Google that is based on our signing certificate for the app.

Page 8: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

The process for registering a device to use this service can be found here for Apple (http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008194-CH1-SW1) and here for Google (http://developer.android.com/guide/google/gcm/index.html). In both cases, a user who allows the app to receive notifications gets a unique key tied to the app and their device from Apple or Google. This key is stored on the REACH servers, which allows the REACH platform to send push notifications to Apple or Google, who ultimately sends the notification to the device. The key on its own is not traceable to a specific device and none of the REACH platform REST calls uses the notification key beyond registration and management of subscribed alerts. As part of our research into improving care for the homeless, we investigated whether or not we should develop an app for capturing HMIS data that is gathered on a homeless person to be able to “pre-register” them within a HMIS system as a way to simplify and improve “Outreach” . Part of the required data set for the HMIS system to be able to track homeless captures the SSN, Birthdate, Sex, and other identifiable information on the person. In talking to CoCs in Virginia and Los Angeles, we also realized that this information is captured already when they are registered at a center as part of the reporting requirements for centers receiving funds through HUD or VA programs. While we see that there is an opportunity to provide a central registration capability to help track and care for those in need, we also realized that this level of responsibility resides at the CoCs themselves. We also evaluated the risks of creating an app for broad public consumption that allows individuals to capture, store, and send personal identifiable information and realized that this type of app had the potential to be misused and storing and sharing this information from the app to the CoC would require special data use agreements and security requirements. Therefore, we decided against developing an app that could allow someone to capture a persons identifiable traits, and approached OutReach in a different manner. Specifically, using the push notifications noted above, we allow a user to monitor shelters (where this information will ultimately be taken by an authoritative entity) for when beds become available, this allows a caregiver to immediately call and start the process as soon as they are notified. To also facilitate the intake process, we added the ability for shelters to describe their intake process by modifying their profile on the website. This information is then pushed to the devices as part of the search results, as well as being visible on the website. This allows a user to find shelters that have intake and screening processes as well as shelters that do not. With regard to the “Shelter Bed” capability, does a service provider have to log in to be able to update the beds in real-time? If yes, what is the account setup process? Yes, we use a login and password to tie a user to places and in particular shelters to manage bed counts in real-time. The user can login via the website on a standard computer or through an Android device, or use the iOS app for managing beds natively. Below are instructions for establishing an account and associating the account with a shelter. We are in the process of evaluating a more rigorous signup and verification process than what is described below. For example, Homeless REACH links its places with Google Places, therefore, an adjudication process that includes Google Places to validate and verify that the user is truly the business

Page 9: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

owner orthat the u Furthermor third pdecremen Below de 1) To us

To us1) R

ht2) O

nw

3) A

Note: Ththe Bed Acounts in

1) T

lo

r person respuser is author

more, the proparty applicanting bed co

escribes the

se the VASh

se the Bed MRegister to us

ttps://homelOnce on the s

ame of the pwill appear. C

An email will

his account aApplication n Real-Time.

To manage beogin screen (

ponsible to mrized to man

cess describation can encunts for a pa

process for r

helterBed app

Management se the Bed Messreach.infosite, search fplace. This aClick this bu

l be sent wit

allows you toManagemen.

M

eds from the(Figure 3)

manage the sinage bed cou

bed below macapsulate thearticular shel

registering b

plication for

ApplicationManagement fo for the place ction will di

utton to begin

Figure 1: Hom

th further ins

o login into tnt App, VAS

Managing B

e web, click

Figure 

ite is one opunt at a speci

akes use of oe workflow rlter.

beds

r managing B

n follow the sApplication

that you’d lisplay the plan managing t

meless REACH W

structions on

the website tShelterBed, f

Beds from th

on “My Plac

2: My Places Ico

ption. Adjudiified shelter.

our REST seregistering a

Beds follow

steps below.n at our webs

like to managace details athe place.

Website

n how to acti

to manage bfrom your iP

he Web:

ces”. (Figur

on

ication is req.

ervices. In tha user and inc

the instructi

. site (Figure

ge. Click theand a “Manag

ivate your ac

bed numbers Phone or iPad

re 2) which w

quired to ins

heory, any decrementing o

ions below.

1)

e details iconge Place” bu

 

ccount.

as well as ud to manage

with take you

sure

evice or

n or utton

use e bed

u to

 

Page 10: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

2) E3) O

4) Tm

Clicking immediat

Enter in your Once logged

This should bmanage on th

on ‘Check-Itely availabl

Figu

Username ain – Select G

bring you to he web. (Figu

In’ will decrle to the VAH

ure 3: Homeless 

and passwordGo under Be

Figure 4: Bed

a screen witure 5)

Figure 5: Be

rease the remHomeless A

REACH Website

d. ed Managem

d Management 

th the associa

d Management 

maining bed cApp for real t

e Log in Screen

ment on the lo

Option

ated shelter,

Screen

count. This itime bed man

ower left pan

 

and bed Ty

information nagement.

 

ne. (Figure 4

ype you can

 

once set is

4)

Page 11: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

1) TVp

2) O7)

To manage beVAShelterBe

assword you

Once Logged7)

eds from theed applicatiou registered o

Figure 6

d in – Click o

F

VAShelter

e VAShelterBn on your iPon the site w

: Mobile VAShe

on ‘Bed Stat

Figure 7: Mobile

rBed Applic

Bed applicatPhone or iPadwith. (Figure

lterBed Applica

tus’ to bring

 e Bed Managem

cation:

tion on the md and enter ie 6)

tion Sign‐in Scre

up the Bed M

ment Screen

mobile devicin the userna

een

Managemen

ce, launch thame and

nt Pane. (Fig

he

gure

Page 12: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

Clicking on (+) for ‘Check In’ removes a bed from the remaining count, clicking on (–) for ‘Check out’ adds a bed back to the available bed count for this bed type at this shelter. Like the web application this information is immediately available to the VAHomeless Application.  Could you provide code snippets from your RESTful Web Services/API?  

Please see attached API guide for full details of the deployed RESTful calls, Sample for Querying Beds near Red Bank Lat=40.360172 Lon= - 74.083206 within a radius of 5 miles.  REST Call ‐‐ https://challenge.qbaseit.com/reach/rest/places/search?types=3&latitude=40.360172&longitude=-74.083206&distance=5&limit=25

  JSON Returned  {"data":[{"items":[{"distance":1.3809775193095837,"place":{"classType":"Place","active":true,"address":{"address1":"212 South Pearl St","address2":null,"city":"Red Bank","geoCoderAddress":"212 South Pearl St, Red Bank, NJ 07701","geoCoderClass":"MetaCartaClient","geoCoderRating":"1.000000","geoCoderRequired":false,"latitude":40.3427,"longitude":-74.0703,"md5AddrDiscreteHash":"c44614664beb3e40da37cc3d40deae30","md5AddrProbHash":"ff720c921483855da6a0da4b1a0aadbd","singleLine":"212 South Pearl St Red Bank, NJ 07701","stateAbbr":"NJ","zipCode":"07701"},"dateCreated":1348068290414,"dateUpdated":1348068290414,"description":null,"md5NameDiscreteHash":"d5d4df07cfa6acdd028db6279e27dfd9","md5NameProbHash":"080dec0f618707a77d1520d600989f2e","name1":"HABcore","name2":"HABcore -Coffey Residence Respite - Monmouth","phoneInformation":{"fax":null,"mobile":null,"other":null,"work":null},"placeAlert":null,"placeId":72,"pointsOfContact":[{"active":false,"dateCreated":1348068290416,"dateUpdated":1348068290416,"firstName":"Steve","lastName":"Heisman","phoneInformation":{"fax":null,"mobile":null,"other":null,"work":"7322248200"},"placeContactId":72,"socialMedia":{"email":null,"facebook":null,"twitter":null,"webpage":null},"title":null,"verified":false}],"serviceOfferings":[{"classType":"ShelterOffering","attributes":[{"attributeTypeId":5,"description":"Emergency Shelter","serviceType":{"description":"Housing","serviceTypeId":3,"name":"3","value":"Housing"},"name":"5","value":"Emergency ….. cut ….

        

Page 13: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

1 of 21

Homeless Reach

REST Services Bed Count ............................................................................................................................................................. 2 Hotlines ................................................................................................................................................................. 3 Import Place .......................................................................................................................................................... 4 Import Bed Count .................................................................................................................................................. 6 Import Place Exists ............................................................................................................................................... 7 Import Deactivate Places ...................................................................................................................................... 8 Lists User Selection Types ................................................................................................................................... 9 Lists User Selections .......................................................................................................................................... 10 Place Alert .......................................................................................................................................................... 11 Device Alerts ....................................................................................................................................................... 12 Registered Device .............................................................................................................................................. 13 Place Search ...................................................................................................................................................... 14 Job Search .......................................................................................................................................................... 15 Place Details ....................................................................................................................................................... 16 Place Default Image ........................................................................................................................................... 17 Place Image ........................................................................................................................................................ 18 User Details ........................................................................................................................................................ 19 User Registration ................................................................................................................................................ 20 Appendix Shelter Bed Type ................................................................................................................................ 21 

Page 14: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

2 of 21

Bed Count Increments bed count on a Place per bed type.

Path /bedcount/{placeid}/{bedtype}

Security Requires authentication, user role of PLACE-ADMIN and a link to {placeid}

HTTP Method POST

Parameters Name Where Type Description placeid Path Long primary key of place bedtype Path String code for bed type; see Appendix Shelter Bed Types increment Request Long +/- bed increment, a negative increment will decrement the beds in

use.

Example https://example.com/reach/rest/bedcount/1/HC?increment=1

Page 15: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

3 of 21

Hotlines Retrieves a list of hotlines.

Path /hotlines

Security None

HTTP Method GET

Parameters None

Example https://example.com/reach/rest/hotlines

Page 16: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

4 of 21

Import Place Receives JSON of a place and puts it on queue for importing.

Path /import/place

Security Requires authentication and user role of REACH-INTERNAL-SYSTEM-ADMIN Default user/password: [email protected]/password

HTTP Method POST

Parameters None - Body of HTTP request is the JSON for import. { address: address, sourceInformation: true, place: { classType: "Place", name1: Agency, name2: Program, description: null, serviceOfferings: [{ classType: "ShelterOffering", attributes: [{ description: HousingType }], serviceType: { serviceTypeId: 3 }, shelterBedTrackers: [{ bedsInUse: Occupied, bedsRemaining: Open, totalBedCount: BedUnits, shelterBedType: { code: shelterbedtypecode } }] }], phoneInformation: { work: phonework, fax: null, mobile: null, other: null }, socialMedia: { twitter: null, facebook: null, webpage: null }, pointsOfContact: [{ firstName: pocfirstname, lastName: poclastname, title: null, phoneInformation: { work: pocphonework }, socialMedia: { twitter: null, facebook: null, webpage: null

Page 17: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

5 of 21

} }] }, importPlaceInformation: { filename: importfile, rownum: rownum, runTag: importruntag, transform: importtransform, uniqueIdentifier: importquickref } }

Example https://example.com/reach/rest/import/place

Page 18: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

6 of 21

Import Bed Count Set bed count on a Place per bed type.

Path /bedcount/{placeid}/{bedtype}

Security Requires authentication and user role of REACH-INTERNAL-SYSTEM-ADMIN Default user/password: [email protected]/password

HTTP Method PUT

Parameters Name Where Type Description placeid Path Long primary key of place bedtype Path String code for bed type; see Appendix Shelter Bed Types Request body is JSON: {

bedsInUse: Long - Set beds in use or beds occupied (required) bedsRemaining: Long - Set beds remaining or beds open (required) totalBedCount: Long - Set total bed count (required)

}

Example https://example.com/reach/rest/bedcount/1/HC

Page 19: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

7 of 21

Import Place Exists Receives JSON of a place and returns a place if it exists.

Path /import/exists

Security Requires authentication and user role of REACH-INTERNAL-SYSTEM-ADMIN Default user/password: [email protected]/password

HTTP Method POST

Parameters None - Body of HTTP request is the JSON for import.

Example https://example.com/reach/rest/import/place/exists

Page 20: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

8 of 21

Import Deactivate Places Used during import to set the active flag of places to false. TODO - Not yet implemented.

Path /import/deactivate/{servicetype}/{transform}

Security Requires authentication and user role of REACH-INTERNAL-SYSTEM-ADMIN Default user/password: [email protected]/password

HTTP Method PUT

Parameters Name Where Type Description servicetype Path Long primary key of service offering type transform Path String name of etl transform

Example https://example.com/reach/rest/import/deactivate/5/TfmMentalFacilities

Page 21: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

9 of 21

Lists User Selection Types Retrieve a list of user selectable types.

Path /lists

Security None

HTTP Method GET

Parameters None

Example https://example.com/reach/rest/lists

Page 22: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

10 of 21

Lists User Selections Retrieve a list of name/value pairs for a type.

Path /lists/{type}

Security None

HTTP Method GET

Parameters Name Where Type Description type Path Int type of resource;

ServiceType(1), ShelterBedType(2), AttributeType(3);

Example https://example.com/reach/rest/lists/1

Page 23: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

11 of 21

Place Alert Create, delete, and retrieve alert.

Path /alerts/{devicetype}/{deviceuuid}/{placeid}

Security None

HTTP Method GET - retrieve alert POST – create and update alert DELETE - delete alert

Parameters Name Where Type Description devicetype Path Int device type code; (required)

-1 : ‘Test Device’, 1 : ‘Apple iOS’, 2 : ‘Google Android’

deviceuuid Path String uuid of device (required) placeid Path String primary key of place (required) enddate* Request String date in ISO format (yyyy-MM-dd) times* Request Int number of times to send alert *only relevant for POST (creating or updating alert)

Example https://example.com/reach/rest/alerts/1/123456789/42?times=4

Page 24: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

12 of 21

Device Alerts Retrieves all alerts for a device.

Path /alerts/{devicetype}/{deviceuuid}

Security None

HTTP Method GET

Parameters Name Where Type Description devicetype Path Int device type code; (required)

-1 : ‘Test Device’, 1 : ‘Apple iOS’, 2 : ‘Google Android’

deviceuuid Path String uuid of device (required, this is the UUID returned from Apple or Google for Messaging Notifications)

Example https://example.com/reach/rest/alerts/1/12343579

Page 25: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

13 of 21

Registered Device Create, delete, and retrieve registered devices.

Path /devices/{devicetype}/{deviceuuid}

Security None

HTTP Method GET - retrieve registered device details POST - create registered device DELETE - delete registered device

Parameters Name Where Type Description devicetype Path Int device type code; (required)

-1 : ‘Test Device’, 1 : ‘Apple iOS’, 2 : ‘Google Android’

deviceuuid Path String device uuid (required, this is the UUID returned from Apple or Google for Messaging Notifications)

Example https://example.com/reach/rest/devices/1/123456789

Page 26: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

14 of 21

Place Search Searches for places, sending ‘deviceuuid’ and ‘devicetype’ will return any alerts.

Path /places/search

Security None

HTTP Method GET

Parameters Name Where Type Description Address Request String string of address (required*) Latitude Request Double latitude of center (required*) Longitude Request Double longitude of center (required*) Name Request String name of place to match in search Latlngvalid Request Boolean true or false to defer to address Distance Request Double radius of search (required) Types Request String Filter, CSV of place type codes Offset Request Int page item offset Limit Request Int items per page limit Onlyopen Request Boolean Filter, return only shelters with open beds Bedtypes Request String Filter, CSV of bed types to return Attributes Request String Filter, CSV of attribute codes to return Devicetype Request Int device type code;

-1 : ‘Test Device’, 1 : ‘Apple iOS’, 2 : ‘Google Android’

Deviceuuid Request String Uuid of device (optional, this is the UUID returned from Apple or Google for Messaging Notifications)

*Either use address or latitude/longitude combination. Address will be geocoded, providing search center latitude and longitude.

Example https://example.com/reach/rest/places/search?address=100+Granny+Apple&distance=5

Page 27: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

15 of 21

Job Search Searches for jobs.

Path /jobs/{type}

Security None

HTTP Method GET

Parameters Name Where Type Description Type Path Int Job search type: All(0), CareerBuilder(1),

NRD(2), Indeed(3), SimplyHired(4) Address Request String string of address (required*) Latitude Request Double latitude of center (required*) Longitude Request Double longitude of center (required*) Distance Request Double radius of search (required) Keywords Request String CSV list of keywords to search with Orkeywords Request Boolean Whether to OR keywords, default is AND Moc Request String Moc code Offset Request Int page item offset Limit Request Int items per page limit *Either use address or latitude/longitude combination. Address will be geocoded, providing search center latitude and longitude. A provide latitude/longitude will be reverse geocoded.

Example https://example.com/reach/rest/jobs/1?address=100+Granny+Apple&distance=5

Page 28: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

16 of 21

Place Details Retrieves place details, sending ‘deviceuuid’ and ‘devicetype’ will return any alerts.

Path /places/{placeid}

Security None

HTTP Method GET

Parameters Name Where Type Description placeid Path Long primary key of place (required) devicetype Request Int device type code;

-1 : ‘Test Device’, 1 : ‘Apple iOS’, 2 : ‘Google Android’

deviceuuid Request String Uuid of device (optional, for testing)

Example https://example.com/reach/rest/1

Page 29: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

17 of 21

Place Default Image Retrieves default place image. The method returns a pre-configured “missing image” if no image is found. The method is shorthand for /images/place/{placeid}/1 and returns the SnapShot image type.

Path /images/place/{placeid}

Security None

HTTP Method GET

Parameters Name Where Type Description placeid Path Long primary key of place

Example https://example.com/reach/rest/images/place/1

Page 30: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

18 of 21

Place Image Retrieves place image. The method returns a pre-configured “missing image” if no image can be found. In the case of StaticMap and StreetView, the method will retrieve an image from Google and store it for subsequent retrievals.

Path /images/place/{placeid}/{imagetype}

Security None

HTTP Method GET

Parameters Name Where Type Description placeid Path Long primary key of place imagetype Path Int image type code

StaticMap(2), SnapShot(1), StreetView(3);

Example https://example.com/reach/rest/images/place/1/1

Page 31: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

19 of 21

User Details Retrieves users’ details.

Path /users/me

Security Requires authentication and user role of PLACE-ADMIN

HTTP Method GET

Parameters None

Example https://example.com/reach/rest/users/me

Page 32: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

20 of 21

User Registration Registers a user. TODO needs more thought. Should put everything on URL path.

Path /users

Security None - TODO needs more thought

HTTP Method POST

Parameters Name Where Type Description email Request String user email address md5password Request String MD5 hash of password places Request String CSV of place ids to link with account

Example https://example.com/reach/rest/[email protected]&md5password=sdfsfklh&places=1,3,42

Page 33: REACH Final Submission Scalability and Sustainability · Judges will consider and evaluate whether your proposed strategy is practical and achievable. ... Our research and conversations

21 of 21

Appendix Shelter Bed Type ('HC','Households with Children'); ('SF+HC','Single Females and Households with Children'); ('SF','Single Females 18years and older'); ('SM+HC','Single Males and Households with Children'); ('SM','Single Males 18years and older'); ('SMF+HC','Single Males and Females and Household with Children'); ('SMF','Single Males and Females 18years and older'); ('YF','Young Females under 18'); ('YM','Young Males under 18'); ('YMF','Unaccompanied Young Males and Females under 18'); ('U','Unspecified population served');