Skip to content

Latest commit

 

History

History
96 lines (67 loc) · 3.91 KB

File metadata and controls

96 lines (67 loc) · 3.91 KB

Health Passport Health Provider Portal Rails Rest API

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.

Behaviour

  1. Health Provider Signs UP for the service.

  2. Health Provider creates a Vaccination Program.

  3. Health Provider generates a QR code, prints and places it visible for patients to scan.

  4. Patiens scan the QR Code after testing.

  5. 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.

  6. Portal generates que QR code text, signs and starts downloading the QR code with the Vaccine Certification.

  7. Users load on their signed certificate to the Health Passport Reader app.

QR Code formats used:

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.

A Signed Vaccine Program Public URL for Users to Generate Certificates

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

Immunization Certificate

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//

Features / TO-DO List

  • 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

Running

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

Staging Server

This project is deployed to https://healthpassport-api.vitorpamplona.com at every commit.

Contributing

Issues and pull requests are very welcome! :)