public void Process(DicomDataset dicomDataset, DicomItem item, Dictionary <string, object> settings = null)
        {
            var encoding = Encoding.UTF8;

            if (item is DicomMultiStringElement)
            {
                var encryptedValues = ((DicomMultiStringElement)item).Get <string[]>().Select(GetCryptoHashString);
                dicomDataset.AddOrUpdate(item.Tag, encryptedValues.ToArray());
            }
            else if (item is DicomStringElement)
            {
                var value          = ((DicomMultiStringElement)item).Get <string>();
                var encryptedValue = GetCryptoHashString(value);
                dicomDataset.AddOrUpdate(item.Tag, encryptedValue);
            }
            else
            {
                var valueBytes     = ((DicomElement)item).Get <byte[]>();
                var encryptesBytes = CryptoHashFunction.ComputeHmacSHA256Hash(valueBytes, _cryptoHashKey);
                dicomDataset.AddOrUpdate(item.Tag, encryptesBytes);
            }
        }
        public string GetCryptoHashString(string input)
        {
            var resultBytes = CryptoHashFunction.ComputeHmacSHA256Hash(Encoding.UTF8.GetBytes(input), _cryptoHashKey);

            return(resultBytes == null ? null : string.Concat(resultBytes.Select(b => b.ToString("x2"))));
        }