special handling of shc code from QC

This commit is contained in:
Billy Lo 2021-09-30 17:42:36 -04:00
parent 9c2130ba2d
commit 1bfa09de47
2 changed files with 32 additions and 9 deletions

View File

@ -16,8 +16,8 @@ export function getQRFromImage(imageData) {
// https://gist.github.com/alexdunae/49cc0ea95001da3360ad6896fa5677ec
// http://mchp-appserv.cpe.umanitoba.ca/viewConcept.php?printer=Y&conceptID=1514
export function decodedStringToReceipt(shcResources: object[]) : HashTable<Receipt> {
// .vc.credentialSubject.fhirBundle.entry
export function decodedStringToReceipt(decoded: object) : HashTable<Receipt> {
const codeToVaccineName = {
'28581000087106': 'Pfizer-BioNTech',
@ -26,6 +26,19 @@ export function decodedStringToReceipt(shcResources: object[]) : HashTable<Recei
'28571000087109': 'Moderna'
}
console.log(decoded);
const shcResources = decoded['vc'].credentialSubject.fhirBundle.entry;
let issuer;
if (decoded['iss'].includes('quebec.ca')) {
issuer = 'qc';
}
if (decoded['iss'].includes('ontariohealth.ca')) {
issuer = 'on';
}
if (decoded['iss'].includes('bchealth.ca')) {
issuer = 'bc';
}
let name = '';
let dateOfBirth;
let receipts : HashTable<Receipt> = {};
@ -57,13 +70,23 @@ export function decodedStringToReceipt(shcResources: object[]) : HashTable<Recei
vaccineName = 'Unknown - ' + vaccineCodes.code;
}
}
const performers = resource['performer'];
for (let j = 0; j < performers.length; j++) {
const performer = performers[j];
organizationName = performer.actor.display;
let performers = resource['performer']; // BC
let receiptNumber;
if (issuer == 'bc') {
performers = resource['performer'];
receiptNumber = shcResources[i]['fullUrl'].split(':')[1];
for (let j = 0; j < performers.length; j++) {
const performer = performers[j];
organizationName = performer.actor.display;
}
}
if (issuer == 'qc') {
organizationName = resource['location'].display; // QC
receiptNumber = resource['protocolApplied'].doseNumber;
}
vaccinationDate = resource.occurrenceDateTime;
const receiptNumber = shcResources[i]['fullUrl'].split(':')[1];
const receipt = new Receipt(name, vaccinationDate, vaccineName, dateOfBirth, receiptNumber, organizationName);
console.log(receipt);
receipts[receiptNumber] = receipt;

View File

@ -257,12 +257,12 @@ async function processSHC(fileBuffer : ArrayBuffer) : Promise<any> {
let decoded = await decodeJWS(jws);
console.log(decoded);
// console.log(decoded);
const verified = verifyJWS(jws, decoded.iss);
if (verified) {
let receipts = Decode.decodedStringToReceipt(decoded.vc.credentialSubject.fhirBundle.entry);
let receipts = Decode.decodedStringToReceipt(decoded);
console.log(receipts);
return Promise.resolve({receipts: receipts, rawData: rawData});