Skip to content

timlegge/perl-Health-SHC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 <[email protected]>

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