Exemplo n.º 1
0
        public ProcessResult ProcessNodeRecursive(ElementNode node, IAnonymizerProcessor processor,
                                                  ProcessContext context, Dictionary <string, object> settings)
        {
            var result = new ProcessResult();

            if (_visitedNodes.Contains(node))
            {
                return(result);
            }

            result = processor.Process(node, context, settings);
            _visitedNodes.Add(node);

            foreach (var child in node.Children().CastElementNodes())
            {
                if (child.IsFhirResource())
                {
                    continue;
                }

                result.Update(ProcessNodeRecursive(child, processor, context, settings));
            }

            return(result);
        }
Exemplo n.º 2
0
        public void Handle(DicomDataset dataset, ProcessContext context)
        {
            EnsureArg.IsNotNull(dataset, nameof(dataset));
            EnsureArg.IsNotNull(context, nameof(context));

            var locatedItems = LocateDicomTag(dataset, context);

            foreach (var item in locatedItems)
            {
                if (_processor.IsSupported(item))
                {
                    _processor.Process(dataset, item, context);
                    context.VisitedNodes.Add(item.ToString());
                }
                else
                {
                    throw new AnonymizerOperationException(DicomAnonymizationErrorCode.UnsupportedAnonymizationMethod, $"Rule {Description} is not supported for the item with VR {item.ValueRepresentation}.");
                }
            }
        }
Exemplo n.º 3
0
        public ProcessResult ProcessNodeRecursive(ElementNode node, IAnonymizerProcessor processor, HashSet <ElementNode> visitedNodes)
        {
            ProcessResult result = new ProcessResult();

            if (visitedNodes.Contains(node))
            {
                return(result);
            }

            result = processor.Process(node);
            visitedNodes.Add(node);

            foreach (var child in node.Children().Cast <ElementNode>())
            {
                if (child.IsFhirResource())
                {
                    continue;
                }

                result.Update(ProcessNodeRecursive(child, processor, visitedNodes));
            }

            return(result);
        }