This is a Rails-based backend for a Health Provider portal to manage and sign Vaccination Certificates.
The UI part is here. A Demo hot deployed from staging is here.
-
Health Provider Signs UP for the service.
-
Health Provider creates a Vaccination Program.
-
Health Provider generates a QR code, prints and places it visible for patients to scan.
-
Patiens scan the QR Code after testing.
-
QR Code takes patients to this portal, where. 5.1. Users add their name to the certificate 5.2. Press button to generate and download.
-
Portal generates que QR code text, signs and starts downloading the QR code with the Vaccine Certification.
-
Users load on their signed certificate to the Health Passport Reader app.
There are two main QR formats we use: (i) a signed public URL that is used to generate an imunization certificate and (ii) the signed immunization certificate itself. It follows the format.
The Signed Public URL is generated for a Vaccination Proram to be placed publically in the Vaccination site. It allows patients to scan the information of the vaccine, insert their names and generate a signed certificate from the Vaccinator's private key.
http://{UI_URL}/generateCertificate/{id_program}?date=YYYY-MM-DD&signature={RSA_SHA256}
Example:
https://healthpassport.vitorpamplona.com/generateCertificate/9?date=2020-11-26&signature=
x9iSOLHgdlP5DUN4Aj2cbAqF1mDmkYcwB%2Bt327U6izI84QJXVDzN1ETfFfU8%
0ADFfvuAnnwysM0NnycHjqMJMvlscDNeqqLcSzCoswMAfN6pSAboqdXArpP0gj%
0AzUNP82cLI3OesK2TFNnwRiGkaakxGsEhaVX0x%2BriCr3Qk%2B5Py4c%3D%0A
The certificate is the signed record that prove a patient name has taken a vaccine. It follows the format:
cred:type:version:signature:keyId:payload
Example:
CRED:BADGE:2:GBCQEIDQNJCG24PNXCQWTQT32KNMQ2XGKQK7OOYX4JD7L5OOE23VD4QEUQBCCAFKSZ66XEW4LZXUV35IPKXNIE32EC3L4DZJAC54XIC5FSUZEVDBHM:KEYS.PATHCHECK.ORG:20210309/MODERNA/COVID19/012L20A/28/HVNUCABMF72UT32M7FQA4M7NQSMXHMMIKFB44M7Z7QV2VFRMZ66A/C28161/RA/500//
- Health Provider Sign Up
- Health Provider Login
- Home Page
- New Vaccination Programs
- Listing Vaccination Programs on Home Page
- Generate and Sign Vaccination Program QR Code to Print
- Accept patient access to ask for their Name and sign the QR Code with Provider's Primary Key
- Generate and Download Patient's signed Certificate.
- Sign the Vaccination Program QR Code on the server
- Sign the Certificate of Vaccination QR Code on the server
- User's public key download
- Percent-encoding and Base64 for signatures
- Staging deployed here
- Health Provider's Password recovery (Forgot My Password logic)
- Edit Vaccination Program
- Rails error messages on the browser are exposing routes and potentially confidential information. Have to remove this somehow.
- Dockerize it
- Reduce amount of data on QRCodes
Make sure you have everything you need to run a Ruby 2.5 / Rails 6 service.
Install modules:
bundle install
Start the API server
rails server
This project is deployed to https://healthpassport-api.vitorpamplona.com at every commit.
Issues and pull requests are very welcome! :)