Ejemplo n.º 1
0
        private void RetrievingFilesFromDirectory()
        {
            try
            {
                String        indexFileName = initialDirectory + @"/index1.htm";
                StringBuilder indexContent  = new StringBuilder();
                indexContent.Append("<center><font size='5' color='#0000ff'>");
                if (utility.AnonymizationType)
                {
                    indexContent.Append("Anonymized DCM files (Basic)</font></center>");
                }
                else
                {
                    indexContent.Append("Anonymized DCM files (Complete)</font></center>");
                }

                indexContent.Append("<left><font color='black' size = '4'><br></br> Input Directory: " + inputDirectory);
                indexContent.Append("</font>");
                indexContent.Append("</left>");
                indexContent.Append("<br></br>");
                indexContent.Append("<font size='3'>");

                HLI.DataSet srcDataset = null;
                DicomFile   dcmFile    = null;

                allDCMFilesTemp = new ArrayList();
                FileInfo      mediaInputFileInfo = null;
                string        mediaFileDir       = inputDirectory;
                DirectoryInfo theDirectoryInfo   = new DirectoryInfo(mediaFileDir);
                allDCMFilesTemp = utility.GetFilesRecursively(theDirectoryInfo);
                foreach (string fileName in allDCMFilesTemp)
                {
                    mediaInputFileInfo = new FileInfo(fileName);

                    counter++;

                    dcmFile = new DicomFile();
                    dcmFile.Read(fileName, mainThread);

                    // Get the Data set from the selected DCM file
                    srcDataset = dcmFile.DataSet;

                    indexContent.Append("<li><a href='" + mediaInputFileInfo.Name + "_" + counter.ToString() + ".html'>" + fileName.Substring(inputDirectory.Length) + "</a></li>");

                    HLI.DataSet annonymizedDataset = srcDataset.Clone();

                    utility.PatientAttributes(annonymizedDataset);
                    for (int number = 0; number < annonymizedDataset.Count; number++)
                    {
                        HLI.Attribute attribute = annonymizedDataset[number];
                        if (attribute.VR == VR.SQ)
                        {
                            utility.SequenceAttribute_recursive(attribute);
                        }
                        else
                        {
                            utility.CacheAndRepairIdentifyingAttribute(attribute);
                            utility.UpdateAnonymizedAttributes(attribute);
                        }
                    }

                    //Save annonymized data to selected directory
                    string savedFileName = "";
                    if (mediaInputFileInfo.Extension != "")
                    {
                        string srcFileNameWithoutExtn = mediaInputFileInfo.Name.Substring(0, (mediaInputFileInfo.Name.Length - 4));
                        savedFileName = outputDirectory + "\\" + srcFileNameWithoutExtn + "_an";
                    }
                    else
                    {
                        savedFileName = outputDirectory + "\\" + mediaInputFileInfo.Name + "_an";
                    }

                    dcmFile.DataSet = annonymizedDataset;
                    dcmFile.Write(savedFileName);

                    datasets = new AttributeCollections();
                    datasets.Add(srcDataset);
                    datasets.Add(annonymizedDataset);

                    //Cleanup temp file
                    utility.cleanup();

                    resultFileName = mediaInputFileInfo.Name;

                    CreateTableWithoutNav();
                }

                StreamWriter writer = new StreamWriter(indexFileName);
                indexContent.Append("</font>");
                indexContent.Append("<left><font color='black' size = '4'><br></br> Output Directory: " + outputDirectory);

                indexContent.Append("</font>");
                indexContent.Append("</left>");
                writer.Write(indexContent.ToString());
                writer.Close();

                dvtkWebBrowser.Navigate(indexFileName);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 2
0
        private void AnonymizeDCMFile()
        {
            try
            {
                utility.AnonymizationType = anonymizationMode;
                CreateDICOMDIR.Enabled    = true;

                OpenFileDialog fileDialog = new OpenFileDialog();
                fileDialog.Multiselect     = false;
                fileDialog.ReadOnlyChecked = true;
                fileDialog.Title           = "Select DCM File";
                fileDialog.Filter          = "DCM files (*.dcm) |*.dcm|All files (*.*)|*.*";

                // Show the file dialog.
                // If the user pressed the OK button...
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {
                    DicomFile dcmFile = new DicomFile();
                    dcmFile.Read(fileDialog.FileName, mainThread);

                    // Get the Data set from the selected DCM file
                    HLI.DataSet srcDataset = dcmFile.DataSet;

                    SaveFileDialog saveDialog   = new SaveFileDialog();
                    FileInfo       saveFileInfo = null;
                    saveDialog.Filter = "DCM files (*.dcm) |*.dcm|All files (*.*)|*.*";
                    if (saveDialog.ShowDialog() == DialogResult.OK)
                    {
                        HLI.DataSet annonymizedDataset = srcDataset.Clone();

                        utility.PatientAttributes(annonymizedDataset);
                        for (int number = 0; number < annonymizedDataset.Count; number++)
                        {
                            HLI.Attribute attribute = annonymizedDataset[number];
                            if (attribute.VR == VR.SQ)
                            {
                                utility.SequenceAttribute_recursive(attribute);
                            }
                            else
                            {
                                utility.CacheAndRepairIdentifyingAttribute(attribute);
                                utility.UpdateAnonymizedAttributes(attribute);
                            }
                        }

                        datasets = new AttributeCollections();
                        datasets.Add(srcDataset);
                        datasets.Add(annonymizedDataset);

                        //Save annonymized data to selected file
                        saveFileInfo    = new FileInfo(saveDialog.FileName);
                        dcmFile.DataSet = annonymizedDataset;
                        dcmFile.Write(saveFileInfo.FullName);

                        //Cleanup temp file
                        utility.cleanup();
                    }
                    else
                    {
                        return;
                    }

                    string        htmlFileName = initialDirectory + "\\" + saveFileInfo.Name + ".html";
                    XmlTextWriter writer       = new XmlTextWriter(htmlFileName, System.Text.Encoding.UTF8);
                    writer.WriteStartElement("b");
                    writer.WriteRaw(@"<b><font size='3' color='#ff0000'>DCM File Anonymization Started...</font></b>");
                    writer.WriteEndElement();
                    writer.Close();
                    resultFileName = htmlFileName;
                    System.Threading.Thread t = new System.Threading.Thread(new ThreadStart(CreateTable));
                    dvtkWebBrowser.Navigate(htmlFileName);
                    t.Start();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }