Open Source HMIS Custom Reporting

Share on:

This is the Provider Dashboard of a Shiny app for which the code behind it is now free and open source. Based on Project Type, the infoboxes are different. See R minor here: https://ohiobalanceofstatecoc.shinyapps.io/Rminor/

About a year ago, I began rewriting all the custom reports I have spent the last decade creating and maintaining in our current (dying) system into a new system using R. Seems drastic, but I was concerned we would lose everything and it is looking like my fears were warranted. The job is not even close to done, but I do have a much improved workflow, we have actual visualizations for our Performance reporting, and, to get to the topic of this blog post:... what I am doing is totally shareable with any other CoC data analyst, regardless of their vendor.

When I first brought the idea of making my code available as a free and open source project online, it was understandably met with some worries about my employer's responsibilities around doing that. So in order to convince the Director and ED, I put together some images that explain exactly what I was proposing in as non-technical of terms as possible and consulted some folks from the outside to point me in the right direction. (Thanks, R community!)

gif cycles through some diagrams showing movement of data

From using R to get what our CoC needs to using GitHub for backups to actually sharing the code.

The slide with the green box around it described my situation as of just a week ago. That is the one that says I only use GitHub for backing up my code. Over the past week, though, I did get permission to make my work public, so the subsequent images are now possible!

The above gif mentions GitHub, so I just want to spend some time on what git is and how that fits into this effort to collaborate. As it points out in the gif above, git (via GitHub) can be used simply as a way of backing up your code. For almost a year, I used it in this way. All of my work was marked "private" and I was sharing my work only with future-me, as sometimes future-me was on my laptop at home and sometimes future-me was at work.

However git can also be used to share code with other humans. Depending on the platform (such as GitHub or GitLab or others), you can set up an account and set your projects (called repositories) as public, and then everyone can see 1. all your code, 2. your changes over time, 3. any issues you are working on currently, and 4. any issues you have already resolved. You can see other things as well, but those are the most important.

Getting involved with contributing to an open source project is often an intimidating idea, but finding a project to participate in that you already care about and that you have a good use for through work is a great place to start.

If you are interested in using git, you can check out the following. It is a 10 minute read: https://guides.github.com/introduction/git-handbook/

If you're planning to or have already installed R Studio, you are going to love the way it integrates git into your workflow!! If you're not already familiar with how GitHub works with R Studio, here's a great resource:  https://happygitwithr.com/

You can find the work I'm doing here: https://github.com/COHHIO

You can see multiple repositories there that are related to HMIS. Each one is under an AGPL license. Each repository has a specific purpose.

The COHHIO_HMIS repo is by far the most important one. Its purpose is to get the data from the HUD CSV export into a format that can be used for creating reporting. Its output is a collection of *.RData files which can be loaded into other projects as needed. The .RData files are more specific to a particular purpose so not only are they just naturally smaller than the entirety of the HUD CSV export itself, but also .Rdata files are compressed.

In the back end, both the R minor and R minor elevated R Studio projects use the .RData files from the COHHIO_HMIS project to build upon. In Windows, I connected each project to the COHHIO_HMIS project via a symbolic link.

If you are looking to create an R Shiny app similar to the one at the top of this post, you could look at the Rminor repository or Rminor_elevated. R minor is the public-facing project-level reporting app and R minor elevated is more client-level and is thus behind a login and only available for users.

Any CoCs who would like to collaborate with me on any of this is TOTALLY ENCOURAGED to reach out! Let's do amazing things! (Or use what's there to create your own things, that's totally fine too!)