Epi Viewpoint is a focused, simple tool that enables case investigation and contact tracing teams to manage cases and contacts and keep track of congregate settings where outbreak clusters have occurred.
Built for public health departments that lack the digital tools to manage an overwhelming volume of COVID cases, Viewpoint is a simple, focused tool that helps you and your staff prioritize who to investigate, what information to collect, and where to focus your efforts. Designed to be easy to implement and learn, Viewpoint is the first step to jump-start a data-informed COVID containment program.
Viewpoint is open-source, meaning that you can make as many copies of it as you want and do whatever you want with those copies, without limitation. But Viewpoint is not accepting pull requests or issues at this time.
- Clone the repo
- Run
bin/dev/doctorand for each problem, either use the suggested remedies or fix it some other way - Run
bin/dev/testand thenbin/dev/startto make sure everything is working
after running mix deps.get
mix esbuild.install && mix esbuild defaultmix sass.install && mix sass default
- Get latest code:
bin/dev/update - Run tests:
bin/dev/test - Start server:
bin/dev/start- (to skip running doctor when starting, use
bin/dev/start fast)
- Run tests and push:
bin/dev/shipit
docker-compose uses the same docker image that production does.
There are some scripts to make local docker development easier (though they don't get used very often so they may not work):
bin/dev/docker-startwill:- check that your computer is set up to run the app via docker
- build the docker image
- start the docker container
bin/dev/docker-bashwill open a bash shell inside the running containerbin/dev/docker-iexwill open an iex session inside the running container
When adding strings to be translated in the domain layer (EpiViewpoint), you'll want to use gettext_noop to provide a
hook for gettext to be able to extract the keys without translating them in the code at runtime. For example:
gettext("some_string_to_be_translated")Once you have added the strings, run the following command to update the po/pot files:
mix gettext.extract --mergeYou will then want to update the corresponding key in the po file. For example, you'll want to add a msgstr value such as:
msgid "unable_to_quarantine"
msgstr "Person unable to quarantine"
Note that mix gettext.extract --merge is run as part of shipit, and shipit will fail if there are any changes as a result.
Use the Deploy to Heroku button to quickly deploy this app to your Heroku account for demo or exploration purposes. Heroku accounts are free, and the Deploy to Heroku button only provisions free resources (with the standard limitations that Heroku puts on free resources).
- Click the button above.
- Sign up or log into Heroku.
- Set the app name (e.g.,
myviewpoint). - Set the CANONICAL_HOST configuration variable to the app name you chose above,
followed by
.herokuapp.com(e.g.,myviewpoint.herokuapp.com). - Set the INITIAL_USER_EMAIL configuration variable to the email address you want for the first admin user. You will use this email address to log in. Epi Viewpoint does not currently send email, so this technically does not need to be a real email address, but it does need to have an "@" sign and cannot include spaces.
- Click the "Deploy app" button. Some progress information will be displayed and the deploy should take about 5 minutes.
- If the deploy is successful, click on the "View" button at the bottom of the page. If everything has worked properly, you will land on a page asking you to set your password. Enter a new password and click "Continue".
- You will then be asked to log in. Use the email address you set up earlier plus the password you just created.
- Configure multifactor authentication with a tool like Google Authenticator, 1Password, etc.
Run bin/staging/deploy which will make sure your Heroku account is all set up for deploying this project, and once
it's happy, it will deploy to Heroku.
If you are deploying to GCP, set the REMOVE_CITEXT_EXTENSION environment variable to true to work around an issue with
GCP cloud_sql import/export.
Unless you used the "Deploy to Heroku" button, you must create the first admin user manually (see the docs
for EpiViewpoint.Release.create_user). After that, you can log in as that admin user and create other users.
This command will copy data from the database into the CSV files.
psql -f export_csvs.sql <database-name>
Depending on permissions with the database, it may be necessary to modify the script to be run within psql using the
\copy command.
\copy ... to ...;
Copyright © 2021 Ratio PBC, Inc. This code is available under the Apache 2.0 license. See also license.