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( ); } }
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)); }
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); }
public DicomFileMetaInformation(DicomDataset dataset) : this() { MediaStorageSOPClassUID = dataset.Get <DicomUID>(DicomTag.SOPClassUID); MediaStorageSOPInstanceUID = dataset.Get <DicomUID>(DicomTag.SOPInstanceUID); TransferSyntax = dataset.InternalTransferSyntax; }
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)); }
/// <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)); }
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); }
public void Get_NonGenericWithIntArgumentTagNonExisting_ShouldNotThrow() { var dataset = new DicomDataset(); var e = Record.Exception(() => Assert.Equal(20, dataset.Get(DicomTag.MetersetRate, 20))); Assert.Null(e); }
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))); }
/// <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))
public void Transform(DicomDataset dataset, DicomDataset modifiedAttributesSequenceItem = null) { dataset.CopyTo(modifiedAttributesSequenceItem, _tag); var uid = dataset.Get <DicomUID>(_tag); dataset.Add(_tag, _generator.Generate(uid)); }
public void Get_IntWithIntArgumentTagNonExisting_ShouldThrow() { var dataset = new DicomDataset(); var e = Record.Exception(() => dataset.Get <int>(DicomTag.MetersetRate, 20)); Assert.IsType <DicomDataException>(e); }
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; }
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); } } }
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); }
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)); }
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)); }
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)); }
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; }
public void Transform(DicomDataset dataset, DicomDataset modifiedAttributesSequenceItem = null) { if (dataset.Contains(_src)) { dataset.CopyTo(modifiedAttributesSequenceItem, _dst); dataset.Add(_dst, dataset.Get <IByteBuffer>(_src)); } }
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); } }
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)); }
public bool Match(DicomDataset dataset) { if (dataset.Contains(_tag)) { var value = dataset.Get <string>(_tag, -1, String.Empty); return(_regex.IsMatch(value)); } return(false); }
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); }
/// <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; } }
public bool Match(DicomDataset dataset) { if (dataset.Contains(_tag)) { var value = dataset.Get <string>(_tag, -1, String.Empty); return(String.IsNullOrEmpty(value)); } return(true); }
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); }
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()); } }
public bool Match(DicomDataset dataset) { if (dataset.Contains(_tag)) { var value = dataset.Get <string>(_tag, -1, String.Empty); return(value.Wildcard(_pattern)); } return(false); }
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)); }