Vouchers at PSI
PSI use the concepts of vouchers to track referrals issued to clients for the purpose of tracking uptake of product and services.
Voucher number characteristics
6 characters in length (letters and digits)
Letters are all capitals
Unique code: First 5 characters are generated from time based formula
value is converted to a base34 [0~9, A~X] (34 digit),
‘I' & ‘O’ (capital o) are then converted to ‘Y’ & 'Z’.
Last 1 character is a control character, calculated by summing the first 5 characters, and then taking the remainder. It is use to validate client-size (including online) a valid voucher number.
Voucher backend generation
Every 24h a cron job + node.js, fills the pool of draft ServiceResquest Ids to 10,000.
All generated vouchers are marked with status “draft”
Voucher operations
Issuing/ online applications
Online applications: bot or website request a voucher to issue to online client
status FHIR server: draft → active (issued)
Issuing/ offline apps
an application ask for N number of voucher to replenish it local pool (about 150)
status main fhir server: draft → on-hold
Voucher issuing (offline)
status local FHIR : on-hold → active
after sync, status main fhir server: on-hold → active
Redeem of voucher (online of offline)
voucher status updated: active → completed
FHIR representation
Sample Resources
FHIR resource status
“draft” - Generated by the cron job.
“on-hold” - Practitioner (using WFA App) takes vouchers and hold them in pool.
“active” - Voucher issued to a Patient.
“completed” - Voucher redeemed.
DRAFT | { |
---|---|
ON-HOLD | { |
ACTIVE | { |
COMPLETED | { |