This is the original ReqCheck Project, developed by the Code for America's 2016 Kansas City, Missouri (KCMO) Fellowship Team in collaraboration with the KCMO Health Department.
A special thank you to the staff at the Kansas City Health Department and the staff at the Centers for Disease Control and Prevention (CDC).
This project references requirements from the CDC in order to evaluate a patient's vaccine record. The evaluation will say whether a patient is 'up to date' or 'needs vaccines'.
This project is a prototype, and has limited functionality. It can currently tell between a up-to-date and non-up-to-date records. However, it is unable to evaluate records currently in the midst of a check up schedule.
This project exists to enable healthcare professionals to evaluate a vaccine record with the up to date CDC requirements.
The project was started after understanding the skilled resources necessary to evaluate a patient's record, and recognizing the benefit for a health clinic's work flow if one is able to evaluate a patient's record from the moment they walk in. It is designed to be a simple tool usable by a health clinic's intake staff.
This project was developed using the information provided by the CDC's implementation guide. The CDC provides guidelines for using the supporting data published yearly, and this information has been interpreted from that guide.
There are many terms that are important for interpretting the algorithm. Many of them are provided below. Others can be found in the [CDC's implementation guide]'s glossary.
For a visual representation of how they work together, please see [this diagram](WHERE IS RACHEL!).
The algorithm is broken into many parts and runs through many different processes. All of the information from the CDC has been imported into the Postgres Database. It is then used to build patient specific requirements to check against the patient's vaccine record.
All of the patient's vaccine doses administered are taken and used to create antigen administered records. A vaccine dose administered with multiple antigens creates multiple antigen administered records. The antigen administered records are then split into groups based on the specific Antigen they address.
Each antigen has multiple antigen series ('paths' to immunization, as defined by the CDC). Each antigen series has many antigen series doses. This information is necessary to create PATIENT SPECIFIC information, used to evaluate the patient's vaccine record.
Evaluation of the patient serieses against the antigen administered records
The target dose is evaluated in the following order or requirements:
If the patient has satisfied the target dose, it is market 'satisfied'. If not, it is marked 'not_satisfied' and given a reason as to why.
The evaluations of 'Age', 'Interval', 'Vaccine Administered' and 'Gender' follow similar paths, and done by 'Evaluator' objects. This is the series of events.
The CDC logic stored in the Target Dose is used to build patient specific 'attributes', which are stored in a hash.
The attributes are then analyzed against the data from the Vaccine Dose that was administered to the patient.
true
The attribute analyses are then evaluated against the different evaluation statuses. If the evaluation is not_satisfied
for any reason, the specific reason will be given as an evaluation_reason
.
false
, then the evaluation_reason
could be too_young
false
, then the evaluation_reason
could be too_old
Each antigen is evaluated based on the most complete patient series. If there is a patient series that is either 'complete' or 'immune', then the antigen is evaluated to be 'complete' or 'immune'.
Do note that 'immune' takes presidence over 'complete', as 'immune' means there is no more target doses (all satisfied), where 'complete' is only if the patient is up to date (but will need more vaccine doses in the future).
If there is no series that is 'complete', then the Antigen is marked 'not complete'.
All of the Antigen Evaluations are then grouped into 'Vaccine Groups', as defined by the CDC in the structured data. Vaccine groups are how medical professionals categorize vaccines (instead of by antigen).
Each vaccine group is then evaluated for the antigen 'completeness'. If all antigen's are 'complete' or 'immune', then that status is given to the vaccine group. If an antigen has a 'not_complete' evaluation status, then the Vaccine Group is given an evaluation status of 'not_complete'.
The entire record is then evaluated by required vaccine groups. This information has specifically been hard coded to fit the Kansas City, Missouri Health Department. If all required vaccine groups are 'complete' or 'immune', then the record is marked as 'comlete'. Otherwise, it is 'not_complete'.
Ensure you are using Ruby version 2.3.1.
ruby --version
Ensure you have Rails 4 installed
rails --version
Ensure you have Postgres 9.5.4 installed
postgres -V
Ensure you have Bundler 1.13.5 installed
bundle --version
RAILS_ENV=[development]
— Environment variable to tell rails application which configuration to useDATABASE_URL=[db connection string]
EXTRACTOR_NAME=[BasicAuth Name]
— Basic Auth Name for accessing the DataImporterApiEXTRACTOR_PASSWORD=[BasicAuth Password]
— Basic Auth Password for accessing the DataImporterApigit clone https://github.com/codeforamerica/ReqCheck.git
bundle install
Note: Qt Dependency and Installation Issues capybara-webkit depends on a WebKit implementation from Qt, a cross-platform development toolkit. You'll need to download the Qt libraries to build and install the gem. You can find instructions for downloading and installing Qt on the capybara-webkit wiki. capybara-webkit requires Qt version 4.8 or greater.
bundle exec rake db:create;
bundle exec rake db:migrate;
This is not required, but will provide test data
bundle exec rake db:seed;
To get the local server going, use Rail's built in test server
bundle exec rails s
The project uses rspec for controller tests and unit tests.
The tests automatically seed the test database with all objects needed for the tests using Factory Girl
rspec spec
The project uses rspec combined with capybara for feature tests (also known as end to end tests).
rspec spec ./spec/features
Although 3rd party packages are not guaranteed to ensure your app is secure, it is a good idea to run a code security analyzer. For this, we use Brakeman
cd reqcheck
)gem install brakeman
brakeman
This project uses Rubocop to ensure the formatting and syntax is correct. This will help produce easily readable code that follows best practices. Rubocop follows the Ruby Style Guide.
cd reqcheck
)gem install rubocop
rubocop
This project will be fully hosted once configuration of the servers are completed so that they are in compliance with HIPAA.
PLEASE NOTE: This application does not guarantee HIPAA compliance. It is the responsibility of the implementers to ensure it passes their HIPAA compliance standards. The developing team and organization assumes no responsibility for this.
This project was deployed in development on aptible using docker and puma.
The development specifics can be found in the following files:
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
We have many features that need to be implemented. A high priority would be:
Also a special thanks to Ben Golder for his mentorship on this project
See also the list of contributors who participated in this project.
This project is licensed under Code for America's copyright. Please see the License file
Thank you to our funders and the Code for America staff for their support. Without this support, this project would not have been possible.
Also, thank you to everyone involved in the research and development
The Health Insurance Portability and Accountability Act (HIPAA) outlines national security standards intended to protect health data created, received, maintained, or transmitted electronically.
To review what has been done, please visit the HIPAA Readme.