Beispiel #1
0
        public void AddFile_AnonymizedSeries_AllFilesAddedToSameStudySeriesNode()
        {
            var dicomFiles = GetDicomFilesFromZip(TestData.Resolve("abd1.zip"));

            // Anonymize all files
            var anonymizer = new DicomAnonymizer();

            foreach (var dicomFile in dicomFiles)
            {
                anonymizer.AnonymizeInPlace(dicomFile);
            }

            // Create DICOM directory
            var dicomDir = new DicomDirectory();

            foreach (var dicomFile in dicomFiles)
            {
                var entry = dicomDir.AddFile(dicomFile);
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SOPInstanceUID), entry.InstanceRecord.GetSingleValue <string>(DicomTag.ReferencedSOPInstanceUIDInFile));
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SeriesInstanceUID), entry.SeriesRecord.GetSingleValue <string>(DicomTag.SeriesInstanceUID));
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.StudyInstanceUID), entry.StudyRecord.GetSingleValue <string>(DicomTag.StudyInstanceUID));
            }

            var imageNodes = dicomDir.RootDirectoryRecord.LowerLevelDirectoryRecord.LowerLevelDirectoryRecord
                             .LowerLevelDirectoryRecordCollection;

            Assert.Equal(dicomFiles.Count, imageNodes.Count());
        }
        public void AddFile_AnonymizedSeries_AllFilesAddedToSameStudySeriesNode()
        {
            var dicomFiles = GetDicomFilesFromWebZip(
                "https://www.creatis.insa-lyon.fr/~jpr/PUBLIC/gdcm/gdcmSampleData/Philips_Medical_Images/mr711-mr712/abd1.zip");

            // Anonymize all files
            var anonymizer = new DicomAnonymizer();

            foreach (var dicomFile in dicomFiles)
            {
                anonymizer.AnonymizeInPlace(dicomFile);
            }

            // Create DICOM directory
            var dicomDir = new DicomDirectory();

            foreach (var dicomFile in dicomFiles)
            {
                dicomDir.AddFile(dicomFile);
            }

            var imageNodes = dicomDir.RootDirectoryRecord.LowerLevelDirectoryRecord.LowerLevelDirectoryRecord
                             .LowerLevelDirectoryRecordCollection;

            Assert.Equal(dicomFiles.Count, imageNodes.Count());
        }
Beispiel #3
0
        public void AddFile_AnonymizedSeries_AllFilesAddedToSameStudySeriesNode()
        {
            var dicomFiles = GetDicomFilesFromWebZip(
                "https://www.creatis.insa-lyon.fr/~jpr/PUBLIC/gdcm/gdcmSampleData/Philips_Medical_Images/mr711-mr712/abd1.zip");

            // Anonymize all files
            var anonymizer = new DicomAnonymizer();

            foreach (var dicomFile in dicomFiles)
            {
                anonymizer.AnonymizeInPlace(dicomFile);
            }

            // Create DICOM directory
            var dicomDir = new DicomDirectory();

            foreach (var dicomFile in dicomFiles)
            {
                var entry = dicomDir.AddFile(dicomFile);
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SOPInstanceUID), entry.InstanceRecord.GetSingleValue <string>(DicomTag.ReferencedSOPInstanceUIDInFile));
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SeriesInstanceUID), entry.SeriesRecord.GetSingleValue <string>(DicomTag.SeriesInstanceUID));
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.StudyInstanceUID), entry.StudyRecord.GetSingleValue <string>(DicomTag.StudyInstanceUID));
            }

            var imageNodes = dicomDir.RootDirectoryRecord.LowerLevelDirectoryRecord.LowerLevelDirectoryRecord
                             .LowerLevelDirectoryRecordCollection;

            Assert.Equal(dicomFiles.Count, imageNodes.Count());
        }
Beispiel #4
0
        public void AddFile_AnonymizedSeries_AllFilesAddedToDifferentPatientNodes()
        {
            var dicomFiles = GetDicomFilesFromZip(TestData.Resolve("abd1.zip"));

            // Anonymize all files
            var patname    = "Pat^Name";
            var patname2   = "Pat^^Name^^";
            var patname3   = "PAT Name";
            var patname4   = "Name^Pat";
            var anonymizer = new DicomAnonymizer();

            foreach (var dicomFile in dicomFiles)
            {
                anonymizer.AnonymizeInPlace(dicomFile);
                dicomFile.Dataset.AddOrUpdate(DicomTag.PatientName, patname);
            }
            // the name of the first image is slightly different
            dicomFiles.First().Dataset.AddOrUpdate(DicomTag.PatientName, patname2);
            dicomFiles.ElementAt(1).Dataset.AddOrUpdate(DicomTag.PatientName, patname3);
            dicomFiles.ElementAt(2).Dataset.AddOrUpdate(DicomTag.PatientName, patname4);

            // Create DICOM directory
            var dicomDir = new DicomDirectory();

            foreach (var dicomFile in dicomFiles)
            {
                var entry = dicomDir.AddFile(dicomFile);
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SOPInstanceUID), entry.InstanceRecord.GetSingleValue <string>(DicomTag.ReferencedSOPInstanceUIDInFile));
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.SeriesInstanceUID), entry.SeriesRecord.GetSingleValue <string>(DicomTag.SeriesInstanceUID));
                Assert.Equal(dicomFile.Dataset.GetSingleValue <string>(DicomTag.StudyInstanceUID), entry.StudyRecord.GetSingleValue <string>(DicomTag.StudyInstanceUID));
            }

            // there shall be only one patient record
            Assert.Equal(4, dicomDir.RootDirectoryRecordCollection.Count());
        }
        protected virtual void RegisterAnonymizer( )
        {
            string enableAnonymizer = CloudConfigurationManager.GetSetting("app:enableAnonymizer");
            bool   enable           = true;


            if (!bool.TryParse(enableAnonymizer, out enable) || enable)
            {
                string anonymizerOptions = CloudConfigurationManager.GetSetting("app:anonymizerOptions");
                var    options           = DicomAnonymizer.SecurityProfileOptions.BasicProfile |
                                           DicomAnonymizer.SecurityProfileOptions.RetainUIDs |
                                           DicomAnonymizer.SecurityProfileOptions.RetainLongFullDates |
                                           DicomAnonymizer.SecurityProfileOptions.RetainPatientChars;

                if (!string.IsNullOrWhiteSpace(anonymizerOptions))
                {
                    options = (DicomAnonymizer.SecurityProfileOptions)Enum.Parse(typeof(DicomAnonymizer.SecurityProfileOptions), anonymizerOptions, true);
                }

                var anonymizer = new DicomAnonymizer(DicomAnonymizer.SecurityProfile.LoadProfile(null, options));

                anonymizer.Profile.PatientName = "Dcloud^Anonymized";
                anonymizer.Profile.PatientID   = "Dcloud.Anonymized";

                RemoveAnonymizerTag(anonymizer, DicomTag.PatientName);
                RemoveAnonymizerTag(anonymizer, DicomTag.PatientID);

                PublisherSubscriberFactory.Instance.Subscribe <WebStoreDatasetProcessingMessage>(this, (message) =>
                {
                    var queryParams = message.Request.Request.RequestUri.ParseQueryString( );


                    anonymizer.AnonymizeInPlace(message.Dataset);

                    if (null != queryParams)
                    {
                        foreach (var queryKey in queryParams.OfType <String>())
                        {
                            uint tag;


                            if (string.IsNullOrWhiteSpace(queryKey))
                            {
                                continue;
                            }

                            if (uint.TryParse(queryKey, System.Globalization.NumberStyles.HexNumber, null, out tag))
                            {
                                message.Dataset.AddOrUpdate(tag, queryParams[queryKey]);
                            }
                        }
                    }
                });
            }
        }
        public void AnonymizeInPlace_Dataset_PatientDataEmpty()
        {
            var dataset    = DicomFile.Open(TestData.Resolve("CT1_J2KI")).Dataset;
            var anonymizer = new DicomAnonymizer();

            anonymizer.AnonymizeInPlace(dataset);

            Assert.Empty(dataset.GetValues <string>(DicomTag.PatientName));
            Assert.Empty(dataset.GetValues <string>(DicomTag.PatientID));
            Assert.Empty(dataset.GetValues <string>(DicomTag.PatientSex));
        }
        public void AnonymizeInPlace_File_SopInstanceUidTransferredToMetaInfo()
        {
            var file       = DicomFile.Open(TestData.Resolve("CT1_J2KI"));
            var old        = file.Dataset.GetSingleValue <DicomUID>(DicomTag.SOPInstanceUID);
            var anonymizer = new DicomAnonymizer();

            anonymizer.AnonymizeInPlace(file);

            var expected = file.Dataset.GetSingleValue <DicomUID>(DicomTag.SOPInstanceUID);
            var actual   = file.FileMetaInfo.MediaStorageSOPInstanceUID;

            Assert.NotEqual(expected, old);
            Assert.Equal(expected, actual);
        }
        public void AnonymizeInPlace_File_ImplementationVersionNameMaintained()
        {
            var file     = DicomFile.Open(TestData.Resolve("CT1_J2KI"));
            var expected = file.FileMetaInfo.ImplementationVersionName;

            Assert.False(string.IsNullOrEmpty(expected));

            var anonymizer = new DicomAnonymizer();

            anonymizer.AnonymizeInPlace(file);

            var actual = file.FileMetaInfo.ImplementationVersionName;

            Assert.Equal(expected, actual);
        }
        public void AnonymizeWithoutException()
        {
            var dataset = new DicomDataset(DicomTransferSyntax.ExplicitVRLittleEndian);

            dataset.Add(new DicomDecimalString(new DicomTag(0x01F1, 0x1033, new DicomPrivateCreator("ELSCINT1")), "0.8"));

            var _anonymizer = new DicomAnonymizer(DicomAnonymizer.SecurityProfile.LoadProfile(null, (DicomAnonymizer.SecurityProfileOptions) 15));

            var ex = Record.Exception(
                () =>
                _anonymizer.AnonymizeInPlace(dataset)
                );

            Assert.Null(ex);
        }
        public void AnonymizeInPlace_RemovableSequence_ShouldBeRemoved()
        {
            const string fileName = "GH610.dcm";
            var          tag      = DicomTag.OriginalAttributesSequence;

            var dataset = DicomFile.Open($"./Test Data/{fileName}").Dataset;

            Assert.True(dataset.Contains(tag));

            var anonymizer = new DicomAnonymizer();

            anonymizer.AnonymizeInPlace(dataset);

            Assert.False(dataset.Contains(tag));
        }
        public void AnonymizeInPlace_SeriesDate_ShouldBeRemoved()
        {
            const string fileName = "CT1_J2KI";
            var          tag      = DicomTag.SeriesDate;

            var dataset = DicomFile.Open($"./Test Data/{fileName}").Dataset;

            Assert.True(dataset.GetSingleValue <string>(tag).Length > 0);

            var anonymizer = new DicomAnonymizer();

            anonymizer.AnonymizeInPlace(dataset);

            var contains = dataset.Contains(tag);

            Assert.False(contains);
        }
Beispiel #12
0
    // Use this for initialization
    private void Start()
    {
#if UNITY_EDITOR
        using (var stream =
                   new MemoryStream(UnityEditor.AssetDatabase.LoadAssetAtPath <TextAsset>("Assets/fo-dicom/Demo/Images/image_dfl.bytes")
                                    .bytes))
#else
        using (var stream = File.OpenRead("E:/Data/DICOM/CT-MONO2-8-abdo.dcm"))
#endif
        {
            var file       = DicomFile.Open(stream);
            var anonymizer = new DicomAnonymizer();
            anonymizer.AnonymizeInPlace(file);

            _dump    = file.WriteToString();
            _texture = new DicomImage(file.Dataset).RenderImage().AsTexture2D();
        }
    }
        public void AnonymizeInPlace_StudyDate_ShouldBeEmpty()
        {
            const string fileName = "CT1_J2KI";
            var          tag      = DicomTag.StudyDate;

            var dataset = DicomFile.Open($"./Test Data/{fileName}").Dataset;

            Assert.True(dataset.GetSingleValue <string>(tag).Length > 0);

            var anonymizer = new DicomAnonymizer();

            anonymizer.AnonymizeInPlace(dataset);

            var expected = Array.Empty <string>();
            var actual   = dataset.GetValues <string>(tag);

            Assert.Equal(expected, actual);
        }
        public void AnonymizeInPlace_SequenceToKeep_NestedDatasetsShouldBeParsed()
        {
            const string fileName         = "GH610.dcm";
            var          tagRoiContourSeq = DicomTag.ROIContourSequence;
            var          tagContourSeq    = DicomTag.ContourSequence;
            var          tagContourImgSeq = DicomTag.ContourImageSequence;
            var          generatedUid1    = DicomUIDGenerator.GenerateDerivedFromUUID();
            var          generatedUid2    = DicomUIDGenerator.GenerateDerivedFromUUID();

            var dataset = DicomFile.Open($"./Test Data/{fileName}").Dataset;

            dataset.Add(new DicomSequence(tagRoiContourSeq, new DicomDataset(
                                              new DicomSequence(tagContourSeq, new DicomDataset(
                                                                    new DicomSequence(tagContourImgSeq,
                                                                                      new DicomDataset(
                                                                                          new DicomUniqueIdentifier(DicomTag.ReferencedSOPInstanceUID, generatedUid1.UID),
                                                                                          new DicomIntegerString(DicomTag.ReferencedFrameNumber, 1)
                                                                                          ),
                                                                                      new DicomDataset(
                                                                                          new DicomUniqueIdentifier(DicomTag.ReferencedSOPInstanceUID, generatedUid2.UID),
                                                                                          new DicomIntegerString(DicomTag.ReferencedFrameNumber, 2)
                                                                                          )
                                                                                      ))
                                                                ))
                                          ));

            var anonymizer = new DicomAnonymizer();

            anonymizer.AnonymizeInPlace(dataset);

            Assert.True(dataset.Contains(tagRoiContourSeq));

            var sequence1 = dataset.GetSequence(tagRoiContourSeq);
            var sequence2 = sequence1.Items[0].GetSequence(tagContourSeq);
            var sequence3 = sequence2.Items[0].GetSequence(tagContourImgSeq);

            Assert.NotEqual(sequence3.Items[0].GetSingleValue <DicomUID>(DicomTag.ReferencedSOPInstanceUID), sequence3.Items[1].GetSingleValue <DicomUID>(DicomTag.ReferencedSOPInstanceUID));
            Assert.NotEqual(generatedUid1, sequence3.Items[0].GetSingleValue <DicomUID>(DicomTag.ReferencedSOPInstanceUID));
            Assert.NotEqual(generatedUid2, sequence3.Items[1].GetSingleValue <DicomUID>(DicomTag.ReferencedSOPInstanceUID));
            Assert.Equal(1, sequence3.Items[0].GetSingleValue <int>(DicomTag.ReferencedFrameNumber));
            Assert.Equal(2, sequence3.Items[1].GetSingleValue <int>(DicomTag.ReferencedFrameNumber));
        }
        public void AnonymizeInPlace_ClearableSequence_ShouldBeCleared()
        {
            const string fileName = "GH610.dcm";
            var          tag      = DicomTag.PersonIdentificationCodeSequence;

            var dataset = DicomFile.Open($"./Test Data/{fileName}").Dataset;

            dataset.Add(new DicomSequence(tag,
                                          new DicomDataset(new DicomLongString(DicomTag.CodeMeaning, "SOME MEANING"))));

            var anonymizer = new DicomAnonymizer();

            anonymizer.AnonymizeInPlace(dataset);

            Assert.True(dataset.Contains(tag));

            var sequence = dataset.GetSequence(tag);

            Assert.Equal(0, sequence.Items.Count);
        }
Beispiel #16
0
    public dicomInfoTools(DicomFile file, bool anonymize)
    {
        if (anonymize)
        {
            var anonymizer = new DicomAnonymizer();
            anonymizer.AnonymizeInPlace(file);
        }

        dateFormat = "dd.MM.yyyy";
        timeFormat = "HH:mm:ss";

        if (file.Dataset.Contains(DicomTag.Columns))
        {
            imageWidth = file.Dataset.Get <int>(DicomTag.Columns);
            //Debug.Log($"Image Width found in dataset: {imageWidth}.");
        }
        else
        {
            imageWidth = 512;
            Debug.Log($"Image Width NOT found in dataset. Defaulting to: {imageWidth}.");
        }

        imageTransferSyntax = file.Dataset.InternalTransferSyntax.UID.ToString();

        if (file.Dataset.Contains(DicomTag.Rows))
        {
            imageHeight = file.Dataset.Get <int>(DicomTag.Rows);
            //Debug.Log($"Image Height found in dataset: {imageHeight}.");
        }
        else
        {
            imageHeight = 512;
            Debug.Log($"Image Height NOT found in dataset. Defaulting to: {imageHeight}.");
        }

        if (file.Dataset.Contains(DicomTag.RescaleSlope))
        {
            imageRescaleSlope = file.Dataset.Get <int>(DicomTag.RescaleSlope);
            //Debug.Log($"Image Rescale Slope found in dataset: {imageRescaleSlope}.");
        }
        else
        {
            imageRescaleSlope = 1;
            Debug.Log($"Image Rescale Slope NOT found in dataset. Defaulting to: {imageRescaleSlope}.");
        }

        if (file.Dataset.Contains(DicomTag.RescaleIntercept))
        {
            imageRescaleIntercept = file.Dataset.Get <int>(DicomTag.RescaleIntercept);
            //Debug.Log($"Image Rescale Intercept found in dataset: {imageRescaleIntercept}.");
        }
        else
        {
            imageRescaleIntercept = -1024;
            Debug.Log($"Image Rescale Intercept NOT found in dataset. Defaulting to: {imageRescaleIntercept}.");
        }

        if (file.Dataset.Contains(DicomTag.WindowWidth))
        {
            imageWindowWidth = file.Dataset.Get <int>(DicomTag.WindowWidth);
            //Debug.Log($"Image Window Width found in dataset: {imageWindowWidth}.");
        }
        else
        {
            imageWindowWidth = 300;
            Debug.Log($"Image Window Width NOT found in dataset. Defaulting to: {imageWindowWidth}.");
        }

        if (file.Dataset.Contains(DicomTag.WindowCenter))
        {
            imageWindowCenter = file.Dataset.Get <int>(DicomTag.WindowCenter);
            //Debug.Log($"Image Window Center found in dataset: {imageWindowCenter}.");
        }
        else
        {
            imageWindowCenter = 100;
            Debug.Log($"Image Window Center NOT found in dataset. Defaulting to: {imageWindowCenter}.");
        }

        if (file.Dataset.Contains(DicomTag.ImageOrientationPatient))
        {
            imageOrientationPatient = file.Dataset.Get <double[]>(DicomTag.ImageOrientationPatient);
            //Debug.Log($"Image Orientation of Patient found in dataset: {imageOrientationPatient}.");
        }
        else
        {
            imageOrientationPatient = null;
            Debug.Log($"Image Orientation of Patient NOT found in dataset. Defaulting to: {imageOrientationPatient}.");
        }


        if (file.Dataset.Contains(DicomTag.PatientID))
        {
            var  id = file.Dataset.Get <string>(DicomTag.PatientID, "N/A");
            int  num;
            bool isParsable = Int32.TryParse(id, out num);

            if (isParsable)
            {
                patientId = num;
            }
            else
            {
                patientId = 0;
            }
        }
        else
        {
            patientId = 0;
        }

        if (file.Dataset.Contains(DicomTag.PatientAge))
        {
            var age = file.Dataset.Get <string>(DicomTag.PatientAge, "N/A");
            age = age.Substring(0, 3);
            int  num;
            bool isParsable = Int32.TryParse(age, out num);

            if (isParsable)
            {
                patientAge = num;
            }
            else
            {
                patientAge = 0;
            }
        }
        else
        {
            patientAge = 0;
        }

        if (file.Dataset.Contains(DicomTag.PatientSex))
        {
            patientSex = file.Dataset.Get <string>(DicomTag.PatientSex, "N/A");
        }
        else
        {
            patientSex = "N/A";
        }

        if (file.Dataset.Contains(DicomTag.PatientName))
        {
            patientName = file.Dataset.Get <string>(DicomTag.PatientName, "N/A");
        }
        else
        {
            patientName = "N/A";
        }

        if (file.Dataset.Contains(DicomTag.PatientBirthDate))
        {
            var date = file.Dataset.Get <string>(DicomTag.PatientBirthDate, "N/A");

            string format        = "yyyyMMdd";
            bool   isFormattable = DateTime.TryParseExact(date, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime newDate);

            if (isFormattable)
            {
                patientBd = newDate;
                //Debug.Log($"{date} converts to {patientBd.ToString(dateFormat)}.");
            }
            else
            {
                patientBd = DateTime.MinValue;
                //Debug.Log($"{date} is not in the correct format.");
            }
        }
        else
        {
            patientBd = DateTime.MinValue;
        }


        if (file.Dataset.Contains(DicomTag.StudyID))
        {
            var  id = file.Dataset.Get <string>(DicomTag.StudyID, "N/A");
            int  num;
            bool isParsable = Int32.TryParse(id, out num);

            if (isParsable)
            {
                studyId = num;
            }
            else
            {
                studyId = 0;
            }
        }
        else
        {
            studyId = 0;
        }

        if (file.Dataset.Contains(DicomTag.StudyDate))
        {
            var date = file.Dataset.Get <string>(DicomTag.StudyDate, "N/A");

            string format        = "yyyyMMdd";
            bool   isFormattable = DateTime.TryParseExact(date, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime newDate);

            if (isFormattable)
            {
                studyDate = newDate;
                //Debug.Log($"{date} converts to {studyDate.ToString(dateFormat)}.");
            }
            else
            {
                studyDate = DateTime.MinValue;
                //Debug.Log($"{date} is not in the correct format.");
            }
        }
        else
        {
            studyDate = DateTime.MinValue;
        }

        if (file.Dataset.Contains(DicomTag.StudyTime))
        {
            var time = file.Dataset.Get <string>(DicomTag.StudyTime, "N/A");

            string format        = "HHmmss.ffffff";
            bool   isFormattable = DateTime.TryParseExact(time, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime newTime);

            if (isFormattable)
            {
                studyTime = newTime;
                //Debug.Log($"{time} converts to {newTime.ToString(timeFormat)}.");
            }
            else
            {
                studyTime = DateTime.MinValue;
                //Debug.Log($"{time} is not in the correct format.");
            }
        }
        else
        {
            studyTime = DateTime.MinValue;
        }

        if (file.Dataset.Contains(DicomTag.StudyDescription))
        {
            studyDescription = file.Dataset.Get <string>(DicomTag.StudyDescription, "N/A");
            //Debug.Log(studyDescription.Length);
            studyDescription = studyDescription.Remove(studyDescription.Length - 1);
            //Debug.Log(studyDescription.Length);
        }
        else
        {
            studyDescription = "N/A";
        }

        if (file.Dataset.Contains(DicomTag.SeriesDescription))
        {
            studySeriesDescription = file.Dataset.Get <string>(DicomTag.SeriesDescription, "N/A");
        }
        else
        {
            studySeriesDescription = "N/A";
        }

        if (file.Dataset.Contains(DicomTag.ProtocolName))
        {
            studyProtocolName = file.Dataset.Get <string>(DicomTag.ProtocolName, "N/A");
        }
        else
        {
            studyProtocolName = "N/A";
        }

        if (file.Dataset.Contains(DicomTag.SliceThickness))
        {
            var   thickness = file.Dataset.Get <string>(DicomTag.SliceThickness, "N/A");
            float num;
            bool  isParsable = Single.TryParse(thickness, out num);

            if (isParsable)
            {
                studySliceThickness = num;
            }
            else
            {
                studySliceThickness = 0f;
            }
        }
        else
        {
            studySliceThickness = 0f;
        }

        if (file.Dataset.Contains(DicomTag.ReferringPhysicianName))
        {
            studyDoctorName = file.Dataset.Get <string>(DicomTag.ReferringPhysicianName, "N/A");
        }
        else
        {
            studyDoctorName = "N/A";
        }


        if (file.Dataset.Contains(DicomTag.Modality))
        {
            modality = file.Dataset.Get <string>(DicomTag.Modality, "N/A");
        }
        else
        {
            modality = "N/A";
        }

        if (file.Dataset.Contains(DicomTag.Manufacturer))
        {
            modalityManufacturer = file.Dataset.Get <string>(DicomTag.Manufacturer, "N/A");
        }
        else
        {
            modalityManufacturer = "N/A";
        }

        orientationPatient = GetPatientOrientationString(imageOrientationPatient);
        //Debug.Log($"Patient orientation: {orientationPatient}");

        GetDicomInfoString();

        //Debug.Log($"Image frame width: {imageWidth} pixels and frame height: {imageHeight} pixels.");
        //Debug.Log($"Image Transfer Syntax: {imageTransferSyntax.ToString()}. Applying Decompression Transfer Syntax: {defaultDicomTransferSyntax.ToString()}");
        //Debug.Log($"Image Rescale Slope: {imageRescaleSlope} and Rescale Intercept: {imageRescaleIntercept}");
    }