special handling of shc code from QC
This commit is contained in:
parent
9c2130ba2d
commit
1bfa09de47
|
@ -16,8 +16,8 @@ export function getQRFromImage(imageData) {
|
||||||
// https://gist.github.com/alexdunae/49cc0ea95001da3360ad6896fa5677ec
|
// https://gist.github.com/alexdunae/49cc0ea95001da3360ad6896fa5677ec
|
||||||
// http://mchp-appserv.cpe.umanitoba.ca/viewConcept.php?printer=Y&conceptID=1514
|
// http://mchp-appserv.cpe.umanitoba.ca/viewConcept.php?printer=Y&conceptID=1514
|
||||||
|
|
||||||
|
// .vc.credentialSubject.fhirBundle.entry
|
||||||
export function decodedStringToReceipt(shcResources: object[]) : HashTable<Receipt> {
|
export function decodedStringToReceipt(decoded: object) : HashTable<Receipt> {
|
||||||
|
|
||||||
const codeToVaccineName = {
|
const codeToVaccineName = {
|
||||||
'28581000087106': 'Pfizer-BioNTech',
|
'28581000087106': 'Pfizer-BioNTech',
|
||||||
|
@ -26,6 +26,19 @@ export function decodedStringToReceipt(shcResources: object[]) : HashTable<Recei
|
||||||
'28571000087109': 'Moderna'
|
'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 name = '';
|
||||||
let dateOfBirth;
|
let dateOfBirth;
|
||||||
let receipts : HashTable<Receipt> = {};
|
let receipts : HashTable<Receipt> = {};
|
||||||
|
@ -57,13 +70,23 @@ export function decodedStringToReceipt(shcResources: object[]) : HashTable<Recei
|
||||||
vaccineName = 'Unknown - ' + vaccineCodes.code;
|
vaccineName = 'Unknown - ' + vaccineCodes.code;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const performers = resource['performer'];
|
|
||||||
for (let j = 0; j < performers.length; j++) {
|
let performers = resource['performer']; // BC
|
||||||
const performer = performers[j];
|
let receiptNumber;
|
||||||
organizationName = performer.actor.display;
|
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;
|
vaccinationDate = resource.occurrenceDateTime;
|
||||||
const receiptNumber = shcResources[i]['fullUrl'].split(':')[1];
|
|
||||||
const receipt = new Receipt(name, vaccinationDate, vaccineName, dateOfBirth, receiptNumber, organizationName);
|
const receipt = new Receipt(name, vaccinationDate, vaccineName, dateOfBirth, receiptNumber, organizationName);
|
||||||
console.log(receipt);
|
console.log(receipt);
|
||||||
receipts[receiptNumber] = receipt;
|
receipts[receiptNumber] = receipt;
|
||||||
|
|
|
@ -257,12 +257,12 @@ async function processSHC(fileBuffer : ArrayBuffer) : Promise<any> {
|
||||||
|
|
||||||
let decoded = await decodeJWS(jws);
|
let decoded = await decodeJWS(jws);
|
||||||
|
|
||||||
console.log(decoded);
|
// console.log(decoded);
|
||||||
|
|
||||||
const verified = verifyJWS(jws, decoded.iss);
|
const verified = verifyJWS(jws, decoded.iss);
|
||||||
|
|
||||||
if (verified) {
|
if (verified) {
|
||||||
let receipts = Decode.decodedStringToReceipt(decoded.vc.credentialSubject.fhirBundle.entry);
|
let receipts = Decode.decodedStringToReceipt(decoded);
|
||||||
console.log(receipts);
|
console.log(receipts);
|
||||||
return Promise.resolve({receipts: receipts, rawData: rawData});
|
return Promise.resolve({receipts: receipts, rawData: rawData});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue