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 - 2024 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