Exemplo n.º 1
0
        protected virtual void WriteVR_Default(fo.DicomDataset ds, fo.DicomElement element, XmlWriter writer)
        {
            fo.DicomVR dicomVr = element.ValueRepresentation;


            for (int index = 0; index < element.Count; index++)
            {
                writer.WriteStartElement(Constants.ATTRIBUTE_VALUE_NAME);

                WriteNumberAttrib(writer, index);

                if (dicomVr.Equals(fo.DicomVR.AT))
                {
                    var    atElement   = ds.Get <fo.DicomElement>    (element.Tag, null);
                    var    tagValue    = atElement.Get <fo.DicomTag> ( );
                    string stringValue = tagValue.ToString("J", null);

                    writer.WriteString(stringValue);
                }
                else
                {
                    writer.WriteString(GetTrimmedString(ds.Get <string> (element.Tag, index, string.Empty)));
                }

                writer.WriteEndElement( );
            }
        }
Exemplo n.º 2
0
        public void Constructor_FromDataset_SequenceItemsNotLinked()
        {
            var ds = new DicomDataset {
                { DicomTag.PatientID, "1" }
            };
            var sps = new DicomDataset {
                { DicomTag.ScheduledStationName, "1" }
            };
            var spcs = new DicomDataset {
                { DicomTag.ContextIdentifier, "1" }
            };

            sps.Add(new DicomSequence(DicomTag.ScheduledProtocolCodeSequence, spcs));
            ds.Add(new DicomSequence(DicomTag.ScheduledProcedureStepSequence, sps));

            var ds2 = new DicomDataset(ds);

            ds2.AddOrUpdate(DicomTag.PatientID, "2");
            ds2.Get <DicomSequence>(DicomTag.ScheduledProcedureStepSequence).Items[0].AddOrUpdate(DicomTag.ScheduledStationName, "2");
            ds2.Get <DicomSequence>(DicomTag.ScheduledProcedureStepSequence).Items[0].Get <DicomSequence>(
                DicomTag.ScheduledProtocolCodeSequence).Items[0].AddOrUpdate(DicomTag.ContextIdentifier, "2");

            Assert.Equal("1", ds.Get <string>(DicomTag.PatientID));
            Assert.Equal(
                "1",
                ds.Get <DicomSequence>(DicomTag.ScheduledProcedureStepSequence).Items[0].Get <string>(
                    DicomTag.ScheduledStationName));
            Assert.Equal(
                "1",
                ds.Get <DicomSequence>(DicomTag.ScheduledProcedureStepSequence).Items[0].Get <DicomSequence>(
                    DicomTag.ScheduledProtocolCodeSequence).Items[0].Get <string>(DicomTag.ContextIdentifier));
        }
Exemplo n.º 3
0
        public void InternalTransferSyntax_Setter_AppliesToAllSequenceDepths()
        {
            var ds = new DicomDataset {
                { DicomTag.PatientID, "1" }
            };
            var sps = new DicomDataset {
                { DicomTag.ScheduledStationName, "1" }
            };
            var spcs = new DicomDataset {
                { DicomTag.ContextIdentifier, "1" }
            };

            sps.Add(new DicomSequence(DicomTag.ScheduledProtocolCodeSequence, spcs));
            ds.Add(new DicomSequence(DicomTag.ScheduledProcedureStepSequence, sps));

            var newSyntax = DicomTransferSyntax.DeflatedExplicitVRLittleEndian;

            ds.InternalTransferSyntax = newSyntax;
            Assert.Equal(newSyntax, ds.InternalTransferSyntax);
            Assert.Equal(
                newSyntax,
                ds.Get <DicomSequence>(DicomTag.ScheduledProcedureStepSequence).Items[0].InternalTransferSyntax);
            Assert.Equal(
                newSyntax,
                ds.Get <DicomSequence>(DicomTag.ScheduledProcedureStepSequence).Items[0].Get <DicomSequence>(
                    DicomTag.ScheduledProtocolCodeSequence).Items[0].InternalTransferSyntax);
        }
Exemplo n.º 4
0
 public DicomFileMetaInformation(DicomDataset dataset)
     : this()
 {
     MediaStorageSOPClassUID    = dataset.Get <DicomUID>(DicomTag.SOPClassUID);
     MediaStorageSOPInstanceUID = dataset.Get <DicomUID>(DicomTag.SOPInstanceUID);
     TransferSyntax             = dataset.InternalTransferSyntax;
 }
Exemplo n.º 5
0
        public static DateTime GetDateTime(this DicomDataset dataset, DicomTag date, DicomTag time)
        {
            DateTime da = dataset.Get <DateTime>(date);
            DateTime tm = dataset.Get <DateTime>(time);

            return(new DateTime(da.Year, da.Month, da.Day, tm.Hour, tm.Minute, tm.Second));
        }
Exemplo n.º 6
0
        /// <summary>
        /// Get a composite <see cref="DateTime"/> instance based on <paramref name="date"/> and <paramref name="time"/> values.
        /// </summary>
        /// <param name="dataset">Dataset from which data should be retrieved.</param>
        /// <param name="date">Tag associated with date value.</param>
        /// <param name="time">Tag associated with time value.</param>
        /// <returns>Composite <see cref="DateTime"/>.</returns>
        public static DateTime GetDateTime(this DicomDataset dataset, DicomTag date, DicomTag time)
        {
            var dd = dataset.Contains(date) ? dataset.Get <DicomDate>(date) : null;
            var dt = dataset.Contains(time) ? dataset.Get <DicomTime>(time) : null;

            var da = dd != null && dd.Count > 0 ? dd.Get <DateTime>(0) : DateTime.MinValue;
            var tm = dt != null && dt.Count > 0 ? dt.Get <DateTime>(0) : DateTime.MinValue;

            return(new DateTime(da.Year, da.Month, da.Day, tm.Hour, tm.Minute, tm.Second));
        }
Exemplo n.º 7
0
        private fo.DicomDataset GetReferencedInstsance(fo.DicomDataset ds)
        {
            var classUID = ds.Get <fo.DicomElement> (fo.DicomTag.SOPClassUID, null);
            var sopUID   = ds.Get <fo.DicomElement> (fo.DicomTag.SOPInstanceUID, null);
            var dataset  = new fo.DicomDataset( );


            dataset.AddOrUpdate(classUID);
            dataset.AddOrUpdate(sopUID);

            return(dataset);
        }
Exemplo n.º 8
0
        public void Get_NonGenericWithIntArgumentTagNonExisting_ShouldNotThrow()
        {
            var dataset = new DicomDataset();
            var e       = Record.Exception(() => Assert.Equal(20, dataset.Get(DicomTag.MetersetRate, 20)));

            Assert.Null(e);
        }
Exemplo n.º 9
0
        public void Add_PrivateTag_GetsCorrectVR()
        {
            var privCreatorDictEntry = new DicomDictionaryEntry(
                new DicomTag(0x0011, 0x0010),
                "Private Creator",
                "PrivateCreator",
                DicomVM.VM_1,
                false,
                DicomVR.LO);

            DicomDictionary.Default.Add(privCreatorDictEntry);

            DicomPrivateCreator privateCreator1 = DicomDictionary.Default.GetPrivateCreator("TESTCREATOR1");
            DicomDictionary     privDict1       = DicomDictionary.Default[privateCreator1];

            var dictEntry = new DicomDictionaryEntry(
                DicomMaskedTag.Parse("0011", "xx10"),
                "TestPrivTagName",
                "TestPrivTagKeyword",
                DicomVM.VM_1,
                false,
                DicomVR.CS);

            privDict1.Add(dictEntry);

            var ds = new DicomDataset
            {
                { dictEntry.Tag, "VAL1" }
            };

            Assert.Equal(DicomVR.CS, ds.Get <DicomVR>(ds.GetPrivateTag(dictEntry.Tag)));
        }
Exemplo n.º 10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DicomFileMetaInformation"/> class.
        /// </summary>
        /// <param name="dataset">
        /// The data set for which file meta information is required.
        /// </param>
        public DicomFileMetaInformation(DicomDataset dataset)
        {
            ValidateItems = dataset.ValidateItems;
            Version       = new byte[] { 0x00, 0x01 };

            MediaStorageSOPClassUID    = dataset.GetSingleValue <DicomUID>(DicomTag.SOPClassUID);
            MediaStorageSOPInstanceUID = dataset.GetSingleValue <DicomUID>(DicomTag.SOPInstanceUID);
            TransferSyntax             = dataset.InternalTransferSyntax;

            ImplementationClassUID    = DicomImplementation.ClassUID;
            ImplementationVersionName = DicomImplementation.Version;

            var aet = dataset.Contains(DicomTag.SourceApplicationEntityTitle) ?
                      dataset.Get <string>(DicomTag.SourceApplicationEntityTitle) : null;

            if (aet != null)
            {
                SourceApplicationEntityTitle = aet;
            }

            if (dataset.TryGetSingleValue(DicomTag.SendingApplicationEntityTitle, out string sendingAETVal))
            {
                SendingApplicationEntityTitle = sendingAETVal;
            }
            if (dataset.TryGetSingleValue(DicomTag.ReceivingApplicationEntityTitle, out string receivingAETVal))
            {
                ReceivingApplicationEntityTitle = receivingAETVal;
            }
            if (dataset.TryGetSingleValue(DicomTag.PrivateInformationCreatorUID, out DicomUID privInfoCreator))
            {
                PrivateInformationCreatorUID = privInfoCreator;
            }
            if (dataset.TryGetValues(DicomTag.PrivateInformation, out byte[] privInfo))
Exemplo n.º 11
0
        public void Transform(DicomDataset dataset, DicomDataset modifiedAttributesSequenceItem = null)
        {
            dataset.CopyTo(modifiedAttributesSequenceItem, _tag);
            var uid = dataset.Get <DicomUID>(_tag);

            dataset.Add(_tag, _generator.Generate(uid));
        }
Exemplo n.º 12
0
        public void Get_IntWithIntArgumentTagNonExisting_ShouldThrow()
        {
            var dataset = new DicomDataset();
            var e       = Record.Exception(() => dataset.Get <int>(DicomTag.MetersetRate, 20));

            Assert.IsType <DicomDataException>(e);
        }
Exemplo n.º 13
0
        public DicomFileMetaInformation(DicomDataset dataset) : base()
        {
            MediaStorageSOPClassUID    = dataset.Get <DicomUID>(DicomTag.SOPClassUID);
            MediaStorageSOPInstanceUID = dataset.Get <DicomUID>(DicomTag.SOPInstanceUID);
            TransferSyntax             = dataset.InternalTransferSyntax;
            ImplementationClassUID     = DicomImplementation.ClassUID;
            ImplementationVersionName  = DicomImplementation.Version;

            var machine = Environment.MachineName;

            if (machine.Length > 16)
            {
                machine = machine.Substring(0, 16);
            }
            SourceApplicationEntityTitle = machine;
        }
Exemplo n.º 14
0
        private void CreateSequence(List <string> elements, int currentElementIndex, fo.DicomDataset dicomRequest, string value)
        {
            uint tag      = uint.Parse(elements[currentElementIndex], System.Globalization.NumberStyles.HexNumber);//TODO: need to handle the case of keywords
            var  dicEntry = fo.DicomDictionary.Default[tag];

            fo.DicomSequence sequence;
            fo.DicomDataset  item;

            dicomRequest.AddOrUpdate(new fo.DicomSequence(dicEntry.Tag));
            sequence = dicomRequest.Get <fo.DicomSequence>(dicEntry.Tag);


            item = new fo.DicomDataset( );

            sequence.Items.Add(item);


            for (int index = (currentElementIndex + 1); index < elements.Count; index++)
            {
                tag = uint.Parse(elements[index], System.Globalization.NumberStyles.HexNumber);

                dicEntry = fo.DicomDictionary.Default[tag];

                if (dicEntry.ValueRepresentations.Contains(fo.DicomVR.SQ))
                {
                    CreateSequence(elements, index, item, value);

                    break;
                }
                else
                {
                    item.AddOrUpdate <string> (tag, value);
                }
            }
        }
Exemplo n.º 15
0
        public void Add_OtherDoubleElementWithMultipleDoubles_Succeeds()
        {
            var dataset = new DicomDataset();

            dataset.Add(DicomTag.DoubleFloatPixelData, 3.45, 6.78, 9.01);
            Assert.IsType(typeof(DicomOtherDouble), dataset.First());
            Assert.Equal(3, dataset.Get <double[]>(DicomTag.DoubleFloatPixelData).Length);
        }
Exemplo n.º 16
0
        private static string GetATElementValue(DicomElement element, DicomDataset ds, int index)
        {
            var atElement = ds.Get <DicomElement>(element.Tag, null);

            var testValue = atElement.Get <DicomTag>(index);

            return(testValue.ToString("J", null));
        }
Exemplo n.º 17
0
        public void Add_UnlimitedCharactersElementWithMultipleStrings_Succeeds()
        {
            var dataset = new DicomDataset();

            dataset.Add(DicomTag.LongCodeValue, "a", "b", "c");
            Assert.IsType(typeof(DicomUnlimitedCharacters), dataset.First());
            Assert.Equal("c", dataset.Get <string>(DicomTag.LongCodeValue, 2));
        }
Exemplo n.º 18
0
        public void Add_UniversalResourceElement_Succeeds()
        {
            var dataset = new DicomDataset();

            dataset.Add(DicomTag.URNCodeValue, "abc");
            Assert.IsType(typeof(DicomUniversalResource), dataset.First());
            Assert.Equal("abc", dataset.Get <string>(DicomTag.URNCodeValue));
        }
Exemplo n.º 19
0
 public DicomFileMetaInformation(DicomDataset dataset)
     : this()
 {
     MediaStorageSOPClassUID = dataset.Get <DicomUID>(DicomTag.SOPClassUID);
     //部分工作站含有DicomTag.SOPInstanceUID但是值为null 需要重新生成
     if (dataset.Contains(DicomTag.SOPInstanceUID) && !string.IsNullOrEmpty(dataset.Get <string>(DicomTag.SOPInstanceUID)))
     {
         MediaStorageSOPInstanceUID = dataset.Get <DicomUID>(DicomTag.SOPInstanceUID);
     }
     else
     {
         DicomUIDGenerator uid = new DicomUIDGenerator();
         dataset.Add <string>(DicomTag.SOPInstanceUID, uid.Generate().ToString());
         MediaStorageSOPInstanceUID = dataset.Get <DicomUID>(DicomTag.SOPInstanceUID);
     }
     TransferSyntax = dataset.InternalTransferSyntax;
 }
Exemplo n.º 20
0
 public void Transform(DicomDataset dataset, DicomDataset modifiedAttributesSequenceItem = null)
 {
     if (dataset.Contains(_src))
     {
         dataset.CopyTo(modifiedAttributesSequenceItem, _dst);
         dataset.Add(_dst, dataset.Get <IByteBuffer>(_src));
     }
 }
Exemplo n.º 21
0
 public void Transform(DicomDataset dataset, DicomDataset modifiedAttributesSequenceItem = null)
 {
     if (dataset.Contains(_tag) && dataset.Get <string>(_tag, -1, String.Empty) == _match)
     {
         dataset.CopyTo(modifiedAttributesSequenceItem, _tag);
         dataset.Add(_tag, _value);
     }
 }
Exemplo n.º 22
0
        public void Add_UnlimitedCharactersElementWithMultipleStrings_Succeeds()
        {
            var tag     = DicomTag.LongCodeValue;
            var dataset = new DicomDataset();

            dataset.Add(tag, "a", "b", "c");
            Assert.IsType <DicomUnlimitedCharacters>(dataset.First(item => item.Tag.Equals(tag)));
            Assert.Equal("c", dataset.Get <string>(tag, 2));
        }
Exemplo n.º 23
0
 public bool Match(DicomDataset dataset)
 {
     if (dataset.Contains(_tag))
     {
         var value = dataset.Get <string>(_tag, -1, String.Empty);
         return(_regex.IsMatch(value));
     }
     return(false);
 }
Exemplo n.º 24
0
        public DicomMediaId
        (
            fo.DicomDataset dataset,
            int frame,
            string mediaType,
            string transferSyntax
        )
        {
            var dicomObject = new ObjectId( )
            {
                StudyInstanceUID  = dataset.Get <string> (fo.DicomTag.StudyInstanceUID, 0, ""),
                SeriesInstanceUID = dataset.Get <string> (fo.DicomTag.SeriesInstanceUID, 0, ""),
                SOPInstanceUID    = dataset.Get <string> (fo.DicomTag.SOPInstanceUID, 0, ""),
                Frame             = frame
            };

            Init(dicomObject, mediaType, transferSyntax);
        }
Exemplo n.º 25
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DicomFileMetaInformation"/> class.
        /// </summary>
        /// <param name="dataset">
        /// The data set for which file meta information is required.
        /// </param>
        public DicomFileMetaInformation(DicomDataset dataset)
        {
            this.Version = new byte[] { 0x00, 0x01 };

            this.MediaStorageSOPClassUID    = dataset.Get <DicomUID>(DicomTag.SOPClassUID);
            this.MediaStorageSOPInstanceUID = dataset.Get <DicomUID>(DicomTag.SOPInstanceUID);
            this.TransferSyntax             = dataset.InternalTransferSyntax;

            this.ImplementationClassUID    = DicomImplementation.ClassUID;
            this.ImplementationVersionName = DicomImplementation.Version;

            var aet = CreateSourceApplicationEntityTitle();

            if (aet != null)
            {
                this.SourceApplicationEntityTitle = aet;
            }
        }
Exemplo n.º 26
0
 public bool Match(DicomDataset dataset)
 {
     if (dataset.Contains(_tag))
     {
         var value = dataset.Get <string>(_tag, -1, String.Empty);
         return(String.IsNullOrEmpty(value));
     }
     return(true);
 }
Exemplo n.º 27
0
        public void Add_OtherDoubleElementWithMultipleDoubles_Succeeds()
        {
            var tag     = DicomTag.DoubleFloatPixelData;
            var dataset = new DicomDataset();

            dataset.Add(tag, 3.45, 6.78, 9.01);
            Assert.IsType <DicomOtherDouble>(dataset.First(item => item.Tag.Equals(tag)));
            Assert.Equal(3, dataset.Get <double[]>(tag).Length);
        }
Exemplo n.º 28
0
 public void Transform(DicomDataset dataset, DicomDataset modifiedAttributesSequenceItem = null)
 {
     if (dataset.Contains(_tag))
     {
         dataset.CopyTo(modifiedAttributesSequenceItem, _tag);
         var value = dataset.Get <string>(_tag, -1, String.Empty);
         dataset.Add(_tag, value.ToLower());
     }
 }
Exemplo n.º 29
0
 public bool Match(DicomDataset dataset)
 {
     if (dataset.Contains(_tag))
     {
         var value = dataset.Get <string>(_tag, -1, String.Empty);
         return(value.Wildcard(_pattern));
     }
     return(false);
 }
Exemplo n.º 30
0
        public void Add_UniversalResourceElement_Succeeds()
        {
            var tag     = DicomTag.URNCodeValue;
            var dataset = new DicomDataset();

            dataset.Add(tag, "abc");
            Assert.IsType <DicomUniversalResource>(dataset.First(item => item.Tag.Equals(tag)));
            Assert.Equal("abc", dataset.Get <string>(tag));
        }