This design looks pretty sound, revocation seems like the big missing piece but I guess that could be done by pushing an updated scanner.
Here in The Netherlands our app is also used for proof of a negative test. I wonder if giving signing powers to however many hundreds of test locations will backfire at some point. Then again I don't know if our national QR codes are even cryptographically signed to begin with.