コード例 #1
0
        public void GivenAgeValue_WhenPerturb_PerturbedValueShouldBeReturned(AgeObject value, PerturbSetting perturbSetting, uint lowerBound, uint upperBound)
        {
            var function = new PerturbFunction(perturbSetting);
            var result   = function.Perturb(value);

            Assert.InRange(result.Value, lowerBound, upperBound);
            Assert.Equal(value.AgeType, value.AgeType);
        }
コード例 #2
0
        public void GivenAnUnsignedLongInteger_WhenPerturb_PerturbedValueShouldBeReturned(ulong value, PerturbSetting perturbSetting, ulong lowerBound, ulong upperBound)
        {
            var function = new PerturbFunction(perturbSetting);
            var result   = function.Perturb(value);

            Assert.InRange(result, lowerBound, upperBound);
            Assert.IsType <ulong>(result);
        }
コード例 #3
0
        public PerturbProcessor(JObject settingObject)
        {
            EnsureArg.IsNotNull(settingObject, nameof(settingObject));

            var settingFactory = new AnonymizerSettingsFactory();
            var perturbSetting = settingFactory.CreateAnonymizerSetting <PerturbSetting>(settingObject);

            _perturbFunction = new PerturbFunction(perturbSetting);
        }
コード例 #4
0
        public void GivenALongInteger_WhenPerturb_PerturbedValueShouldBeReturned(long value, PerturbSetting perturbSetting, long lowerBound, long upperBound)
        {
            var function = new PerturbFunction(perturbSetting);
            var result   = function.Perturb(value);

            Assert.InRange(result, lowerBound, upperBound);
            Assert.True(GetDecimalPlaces(result) <= perturbSetting.RoundTo);
            Assert.IsType <long>(result);
        }
コード例 #5
0
        public void GivenAnUnsignedShortInteger_WhenPerturb_PerturbedValueShouldBeReturned(ushort value, PerturbSetting perturbSetting, ushort lowerBound, ushort upperBound)
        {
            var function = new PerturbFunction(perturbSetting);
            var result   = function.Perturb(value);

            Assert.InRange(result, lowerBound, upperBound);
            Assert.True(GetDecimalPlaces(result) <= perturbSetting.RoundTo);
            Assert.IsType <ushort>(result);
        }
コード例 #6
0
        public void GivenAFloat_WhenPerturb_PerturbedValueShouldBeReturned(float value, PerturbSetting perturbSetting, float lowerBound, float upperBound)
        {
            var function = new PerturbFunction(perturbSetting);
            var result   = function.Perturb(value);

            Assert.InRange(result, lowerBound, upperBound);
            Assert.True(GetDecimalPlaces((decimal)result) <= perturbSetting.RoundTo);
            Assert.IsType <float>(result);
        }
コード例 #7
0
        public void GivenAValueString_WhenPerturb_PerturbedValueShouldBeReturned(string value, PerturbSetting perturbSetting, decimal lowerBound, decimal upperBound)
        {
            var function = new PerturbFunction(perturbSetting);
            var result   = function.Perturb(value);

            Assert.IsType <string>(result);
            Assert.InRange(decimal.Parse(result), lowerBound, upperBound);
            Assert.True(GetDecimalPlaces(decimal.Parse(result)) <= perturbSetting.RoundTo);
        }
コード例 #8
0
        public void Process(DicomDataset dicomDataset, DicomItem item, Dictionary<string, object> settings = null)
        {
            var perturbSetting = settings == null ? new PerturbSetting() : CreatePertubSettings(settings);
            var perturbedValues = new List<decimal>() { };

            if (item.ValueRepresentation == DicomVR.AS)
            {
                var values = ((DicomAgeString)item).Get<string[]>().Select(Utility.ParseAge).Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.DS)
            {
                var values = ((DicomDecimalString)item).Get<decimal[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.FL)
            {
                var values = ((DicomFloatingPointSingle)item).Get<float[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if ( item.ValueRepresentation == DicomVR.OF)
            {
                var values = ((DicomOtherFloat)item).Get<float[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.FD)
            {
                var values = ((DicomFloatingPointSingle)item).Get<double[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.OD)
            {
                var values = ((DicomFloatingPointSingle)item).Get<double[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.IS)
            {
                var values = ((DicomIntegerString)item).Get<int[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.SL)
            {
                var values = ((DicomSignedLong)item).Get<int[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.SS)
            {
                var values = ((DicomSignedShort)item).Get<short[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.US)
            {
                var values = ((DicomUnsignedShort)item).Get<ushort[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.OW)
            {
                var values = ((DicomOtherWord)item).Get<ushort[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.UL)
            {
                var values = ((DicomUnsignedLong)item).Get<uint[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.OL)
            {
                var values = ((DicomOtherLong)item).Get<uint[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.UV)
            {
                var values = ((DicomUnsignedVeryLong)item).Get<ulong[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.OV)
            {
                var values = ((DicomOtherVeryLong)item).Get<ulong[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else if (item.ValueRepresentation == DicomVR.SV)
            {
                var values = ((DicomSignedVeryLong)item).Get<long[]>().Select(x => PerturbFunction.Perturb(x, perturbSetting));
                dicomDataset.AddOrUpdate(item.Tag, values.ToArray());
            }
            else
            {
                throw new Exception();
            }
        }