Ejemplo n.º 1
0
        public void ProcessRequest(HttpContext context)
        {
            StreamReader         reader   = new StreamReader(context.Request.InputStream);
            string               inputstr = HttpUtility.UrlDecode(reader.ReadToEnd());
            JavaScriptSerializer js       = new JavaScriptSerializer();
            Img img = js.Deserialize <Img>(inputstr);

            if (img != null)
            {
                string Pic_Path = HttpContext.Current.Server.MapPath(img.Name + ".png");

                using (FileStream fs = new FileStream(Pic_Path, FileMode.Create))
                {
                    using (BinaryWriter bw = new BinaryWriter(fs))
                    {
                        byte[] data = Convert.FromBase64String(img.ImageData);
                        bw.Write(data);
                        bw.Close();
                    }
                }

                DicomUtility.Bmp2Dcm(Pic_Path, Pic_Path.Replace("png", "dcm"), img.Name, "F", img.Age.ToString(), img.ProcessNum, img.Modality, img.HospitalName);
                DicomUtility.SendDcm(Pic_Path.Replace("png", "dcm"), "127.0.0.1", 104);
            }
            context.Response.ContentType = "text/plain";
            context.Response.Write("suc");
        }
        public void Process(DicomDataset dicomDataset, DicomItem item, ProcessContext context = null)
        {
            EnsureArg.IsNotNull(dicomDataset, nameof(dicomDataset));
            EnsureArg.IsNotNull(item, nameof(item));

            var redactedValues = new List <string>();

            if (item.ValueRepresentation == DicomVR.AS)
            {
                var values = ((DicomAgeString)item).Get <string[]>();
                foreach (var value in values)
                {
                    var result = _redactFunction.Redact(DicomUtility.ParseAge(value));
                    if (result != null)
                    {
                        redactedValues.Add(DicomUtility.GenerateAgeString(result));
                    }
                }
            }
            else if (item.ValueRepresentation == DicomVR.DA)
            {
                var values = DicomUtility.ParseDicomDate((DicomDate)item);
                foreach (var value in values)
                {
                    var result = _redactFunction.Redact(value);
                    if (result != null)
                    {
                        redactedValues.Add(DicomUtility.GenerateDicomDateString((DateTimeOffset)result));
                    }
                }
            }
            else if (item.ValueRepresentation == DicomVR.DT)
            {
                DateTimeObject[] values = DicomUtility.ParseDicomDateTime((DicomDateTime)item);
                foreach (var value in values)
                {
                    DateTimeObject result = _redactFunction.Redact(value);
                    if (result != null)
                    {
                        redactedValues.Add(DicomUtility.GenerateDicomDateTimeString(result));
                    }
                }
            }
            else if (item.ValueRepresentation == DicomVR.SQ)
            {
                dicomDataset.AddOrUpdate <DicomDataset>(DicomVR.SQ, item.Tag);
                return;
            }

            if (redactedValues.Count != 0)
            {
                dicomDataset.AddOrUpdate(item.ValueRepresentation, item.Tag, redactedValues.ToArray());
            }
            else
            {
                dicomDataset.AddOrUpdate <string>(item.ValueRepresentation, item.Tag, values: null);
            }

            _logger.LogDebug($"The value of DICOM item '{item}' is redacted.");
        }