Data hash and block hash are different things, which is why you are seeing different values.
The data hash is the hash of the BlockData (which contains all the transaction envelopes within the block), by MerkleTree.
A block hash is calculated by hashing over the concatenated ASN.1 encoded bytes of: the block number, previous block hash, and current block data hash. See this answer for a JavaScript implementation of block hash calculation.