A project to provide an interactive dashboard with data from Sacramento County's Homeless Management Information System
- Dashboard live at https://hmis-dashboard.herokuapp.com/
- Source database API: https://hmis-dashboard.herokuapp.com/api/source
- Data source here.
- Context
- Tools Used
- Assumptions Used to Produce Charts
- Execution Instructions
This dashboard was developed to help the community visualize the volume of homeless-related services, how many people find permanent housing through these programs, and the demographics of those who use the services. The data comes from Sacramento's Homeless Management Information System (HMIS), which is used by local homeless service providers within Sacramento County to coordinate care, manage their operations, and better serve those in need of homeless services (referred to in this dashboard as clients). As of early 2020, the most recent public data is through August 2019. The dashboard includes interactive charts that allows users to explore homeless services program volumes, outcomes, and participant demographics by year and program type. An explanation of assumptions made for chart plotting is included at the bottom of this readme.
- Initial ETL, exploration, and database build was via a Python Jupyter Notebook.
- Python app now used to clean and load data into database.
- Python modules used include SQLAlchemy, Numpy, and Pandas.
- Development and production database is PostgreSQL.
- A flask API serves the data from the database.
- Web page design uses HTML5, CSS3, and JavaScript, including Highcarts library.
- Web page hosted on Heroku app.
- While there is some data in the dataset after August 2019, it appears to be incomplete and is not included.
- Total distinct clients and total program enrollments differ because of clients enrolling in multiple programs during a given time period. Distinct clients are meant to represent how many individuals receive services per year, and total program enrollment is meant to capture the overall load on the homeless services system. Total clients/ enrollments count clients who enrolled a program either during or before the given year and exited any time during or after the given year. For example, both a client who enrolled on January 1st, 2016 and exited in February 1st, 2016, and a client who enrolled in July 1st, 2015 and exited July 1st, 2017 would be counted in "Total Clients/Enrollments" for 2016; however, the latter client would be counted as active in 2015, 2016 and 2017.
- New clients/enrollments and clients/enrollments ended are straightforward counts of activity within the time period.
- For those who exited a program in the period, percent is calculated as the number of clients who exited to permanent housing divided by the total number of exits. Permanent housing is defined as Category 1 as defined in “Variables included in County Data” spreadsheet’s “Exit Destination” worksheet, and includes rapid rehousing and permanent supportive housing.
- Clients are only counted once. If a client happens to have an exit to permanent housing and an exit in the same period to something other than permanent housing, they are counted as an exit to permanent housing.
- Time is calculated for those who started from street outreach, transitional housing, or day/emergency shelter and exited to permanent housing Category 1 (rapid rehousing and permanent supportive housing).
- Unknown categories are grouped together. For example, in Race chart, unknown includes categories ‘Client Refused', 'Data Not Collected', 'Client doesn't Know', and ‘NULL’.
- Counts show the total number of distinct clients per year, using the same method as described in Volume/ Program Participation above.
- Create a local PostgreSQL database named "sac_hmis_db".
- Create a local .env file with your PostgreSQL
username
andpassword
. See sample-env.txt file for format. - Use a terminal to navigate to the main folder and run set-up.py.
- Run app.py.
- Open your browser and go to the url
http://localhost:5000/
.