NAME Health::SHC - Verify Smart Health Card Signature and Extract data. SYNOPSIS use Health::SHC::Validate; my $shc_valid = Health::SHC::Validate->new(); # Use builtin trusted keys my $data = $shc_valid->get_valid_data($qr); # Use your own keys to validate - you may trust them my $data = $shc_valid->get_valid_data($qr, $keys_json); use Health::SHC; my $sh = Health::SHC->new(); my @patients = $sh->get_patients($data); foreach (@patients) { print "Patient: ", $_->{given}, " ", $_->{middle}, " ", $_->{family}, "\n"; } my @immunizations = $sh->get_immunizations($data); print "Vacination Provider", "\t", "Date", "\n"; foreach (@immunizations) { print $_->{provider}, "\t", $_->{date}, "\n"; } my @vaccines = $sh->get_vaccines($data); print "Manufacturer\tLot Number\tCode\tCode System\n"; foreach (@vaccines) { print $_->{manufacturer}, "\t\t", $_->{lotNumber}, "\t\t"; my $codes = $_->{codes}; foreach my $tmp (@$codes) { print $tmp->{code}, "\t", $tmp->{system}, "\t"; } print "\n"; } DESCRIPTION This perl module can extract a Smart Health Card's data from PDFs or image file. The extracted shc:/ Smart Health Card URI is decoded and the signature checked. The module provide several methods to retrieve the data in a more usable format. Health::SHC supports QR codes for the following regions: * Québec * British Columbia * Saskatchewan * Alberta * Newfoundland and Labrador * Nova Scotia * Ontario * Northwest Territories * Yukon * New Brunswick/Nouveau-Brunswick * Japan The keys in share/keys.json (and supported regions) are based on the keys included with https://github.com/obrassard/shc-extractor. Additional regions can be added with a pull request or by logging an issue at https://github.com/timlegge/perl-Health-SHC/issues. COPYRIGHT The following copyright notice applies to all the files provided in this distribution, including binary files, unless explicitly noted otherwise. Copyright 2021 Timothy Legge LICENCE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. METHODS new(...) Constructor; see OPTIONS above. get_patients($data) Arguments: $data: string Smart Health Card data without the "shc:/" prefix Returns: hash containing the Patient information get_immunizations($data) Arguments: $data: string Smart Health Card data without the "shc:/" prefix Returns: hash containing the Immunization data get_vaccines($data) Arguments: $data: string Smart Health Card data without the "shc:/" prefix Returns: hash containing the Vaccine data