Boy Scout Medical Record System for Blue Ridge Mountain Council

TR Number
Date
2012-05-03
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract

For this semester project, our team decided to partner with the Boy Scouts of America in Pulaski County. Our coordinator, Gregory W. Harmon, works for the Boy Scouts and manages all of their camping facilities. Since they serve over 120,000 users per day, they were looking for ways to improve their medical recording procedures for filing injuries and accidents. For them, currently everything is written by hand into a log book and supplemented with various forms. Our project is basically a web-based digitalization of this recording procedure. This system has one main form that goes into a database. This main form has the ability to create arbitrary reports with electronic signatures (for legal reasons) as well as the ability to auto populate other form fields.

The technologies we used for this project include object-oriented PHP, MySQL, JavaScript, jQuery, phpass, CSS, and HTML5 (appcache/localStorage). The website that we developed has a home login page. After the user has successfully logged in with his or her user account information, there are multiple things he or she can do. The user can create a new user account with user information, delete an existing user, change the password of the currently logged in user, file an injury report (and upload photos of the injury), view previous injury reports, search reports (which can be downloaded and printed), manage backups (manually and automatically), access forms offline, and contact support for help. Some of the other features of the website include automatic output minification (for CSS, HTML, JavaScript, and fonts), client- and server-side input validation, and robust error handling.

Our final website solution ended up being 7,141 lines (158 pages) of code long. Our website is divided up into nine directories (root, backend, backups, css, fonts, form-templates, images, js, and photos), and the code is split up across 55 files. The root folder contains all of the website views and controllers. The backend folder contains all of the website models. The backups folder stores all manual and automatic backups in gzip format. The css folder stores all CSS. The fonts folder stores all custom web fonts. The form-templates folder stores RTF templates for each of the output forms. A user can easily modify these RTF templates, which have variable placeholders, to change the way the report forms look. The images folder contains all of the icons and images used by the website. The js folder stores all of the front-end JavaScript and jQuery code. The photos folder contains all of the photos that users have uploaded with injury forms.

Our database stores user account information and injury forms. We developed and normalized the database design in MySQL Workbench. We ended up with seventeen tables. Each injury form is broken up across a series of tables. A report table stores foreign keys to each of these injury tables. We managed our tables in phpMyAdmin, a web control panel. We perform database backups using mysqldump, a binary executable that comes with MySQL.

To make the website secure, we used the phpass library, which effectively combats rainbow tables and password crackers by using salted, per-user bcrypt password hashes. We also prepared SQL queries to prevent SQL injections. Finally, we sanitized output to prevent cross-site scripting (XSS) attacks.

Overall, the website we developed provides a nice alternative to the current paper solution that the Blue Ridge Mountain Council is using. It is our hope that the Blue Ridge Mountain Council can continue to use and modify our system for the years to come.

Description
We developed a web site for the Blue Ridge Mountain Council of the Boy Scouts of America. The website serves as a medical record system.
Keywords
boy scouts, blue ridge mountain council, medical records, injuries, reports, photo records
Citation