I'm afraid this simply cannot be done in a decentralized immutable system such as a blockchain, because every node has a copy of all the data. So if a node saw the decryption key once, and has a copy of the encrypted data, it will always be able to decrypt it in future. You need a centralized database, not a blockchain, if you want to control access in this way.