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
|
||||
// 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;
|
||||
|
|
|
@ -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});
|
||||
|
||||
|
|
Loading…
Reference in New Issue