public void AddingRegularTag_ToMetaInformation_ShouldThrow() { var metaInfo = new DicomFileMetaInformation(); var exception = Record.Exception(() => metaInfo.AddOrUpdate(DicomTag.PatientName, "Doe^John")); Assert.IsType <DicomDataException>(exception); }
public void Constructor_FromFileMetaInformation_ShouldNotThrow() { var metaInfo = new DicomFileMetaInformation(); var exception = Record.Exception(() => new DicomFileMetaInformation(metaInfo)); Assert.Null(exception); }
private void AddNewRecord(DicomFileMetaInformation metaFileInfo, DicomDataset dataset, string referencedFileId) { var patientRecord = this.CreatePatientRecord(dataset); var studyRecord = this.CreateStudyRecord(dataset, patientRecord); var seriesRecord = this.CreateSeriesRecord(dataset, studyRecord); CreateImageRecord(metaFileInfo, dataset, seriesRecord, referencedFileId); }
public void Invalid_UI_values_for_meta_information_should_throw_on_set_when_validation_is_enabled(string sopInstanceUid) { var metaInfo = new DicomFileMetaInformation() { ValidateItems = true }; Assert.Throws <DicomValidationException>(() => metaInfo.MediaStorageSOPInstanceUID = new DicomUID(sopInstanceUid, "test", DicomUidType.SOPInstance)); }
private void AddNewRcord(DicomFileMetaInformation metaFileInfo, DicomDataset dataset, string referencedFileId) { DicomDirectoryRecord patientRecord, studyRecord, seriesRecord; patientRecord = CreatePatientRecord(dataset); studyRecord = CreateStudyRecord(dataset, patientRecord); seriesRecord = CreateSeriesRecord(dataset, studyRecord); CreateImageRecord(metaFileInfo, dataset, seriesRecord, referencedFileId); }
public string GetDicomTagValueByDicomMetaInfo(DicomFileMetaInformation dicomMetaInfo, DicomTag dicomTag) { string TagValue = ""; if (dicomMetaInfo.TryGetString(dicomTag, out TagValue)) { TagValue = dicomMetaInfo.GetString(dicomTag); } return(TagValue); }
public static IAsyncResult BeginWrite( this DicomFileWriter @this, IByteTarget target, DicomFileMetaInformation fileMetaInfo, DicomDataset dataset, AsyncCallback callback, object state) { return(AsyncFactory.ToBegin(@this.WriteAsync(target, fileMetaInfo, dataset), callback, state)); }
public static IAsyncResult BeginWrite( this DicomFileWriter @this, IByteTarget target, DicomFileMetaInformation fileMetaInfo, DicomDataset dataset, AsyncCallback callback, object state) { return AsyncFactory.ToBegin(@this.WriteAsync(target, fileMetaInfo, dataset), callback, state); }
public void ImplementationVersionName_GetterWhenAttributeIncluded_ReturnsValue() { var metaInfo = new DicomFileMetaInformation( new DicomDataset( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.SecondaryCaptureImageStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, "1.2.3"))); var exception = Record.Exception(() => { Assert.NotNull(metaInfo.ImplementationVersionName); }); Assert.Null(exception); }
public DicomFileWriterTest() { _metaInfo = new DicomFileMetaInformation { MediaStorageSOPClassUID = DicomUID.RTDoseStorage, TransferSyntax = DicomTransferSyntax.JPEG2000Lossless }; _dataset = new DicomDataset( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.RTDoseStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, "1.2.3"), new DicomLongString(_doseCommentTag, _comment)); }
public DicomFileMetaInformation GetDicomMetaInfoByDicomFile(DicomFile dicomFile) { DicomFileMetaInformation dicominfo = null; try { dicominfo = dicomFile.FileMetaInfo; } catch (Exception ex) { } return(dicominfo); }
public void SourceApplicationEntityTitle_GetterWhenAttributeAlreadyExists_ReturnsValue() { var metaInfo = new DicomFileMetaInformation( new DicomDataset( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.SecondaryCaptureImageStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, "1.2.3")) .Add(DicomTag.SourceApplicationEntityTitle, "ABCDEFG")); var exception = Record.Exception(() => { Assert.Equal(metaInfo.SourceApplicationEntityTitle, "ABCDEFG"); }); Assert.Null(exception); }
public void Invalid_UI_values_for_meta_information_should_not_throw_on_creation(string sopInstanceUid) { var dataset = new DicomDataset { AutoValidate = false }; dataset.Add( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.SecondaryCaptureImageStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, sopInstanceUid)); var metaInfo = new DicomFileMetaInformation(dataset); Assert.Equal(sopInstanceUid, metaInfo.MediaStorageSOPInstanceUID.UID); }
public DicomFileWriterTest() { this.metaInfo = new DicomFileMetaInformation { MediaStorageSOPClassUID = DicomUID.RTDoseStorage, TransferSyntax = DicomTransferSyntax.JPEG2000Lossless }; this.dataset = new DicomDataset( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.RTDoseStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, "1.2.3"), new DicomLongString(DoseCommentTag, Comment)); this.locker = new object(); }
public void SourceApplicationEntityTitle_GetterWhenAttributeMissing_ReturnsNull() { var metaInfo = new DicomFileMetaInformation( new DicomDataset( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.SecondaryCaptureImageStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, "1.2.3"))); metaInfo.Remove(DicomTag.SourceApplicationEntityTitle); var exception = Record.Exception(() => { Assert.Null(metaInfo.SourceApplicationEntityTitle); }); Assert.Null(exception); }
public void Construction_sets_validation_to_dataset_value_using_dataset_constructor(bool validate) { var dataset = new DicomDataset { ValidateItems = validate }; dataset.Add( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.SecondaryCaptureImageStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, "1.2.3.456")); var metaInfo = new DicomFileMetaInformation(dataset); Assert.Equal(validate, metaInfo.ValidateItems); Assert.Equal("1.2.3.456", metaInfo.MediaStorageSOPInstanceUID.UID); }
public IAsyncResult BeginWrite(IByteTarget target, DicomFileMetaInformation fileMetaInfo, DicomDataset dataset, AsyncCallback callback, object state) { _target = target; _fileMetaInfo = fileMetaInfo; _dataset = dataset; _async = new EventAsyncResult(callback, state); byte[] preamble = new byte[132]; preamble[128] = (byte)'D'; preamble[129] = (byte)'I'; preamble[130] = (byte)'C'; preamble[131] = (byte)'M'; _target.Write(preamble, 0, 132, OnCompletePreamble, null); return _async; }
private void CreateImageRecord( DicomFileMetaInformation metaFileInfo, DicomDataset dataset, DicomDirectoryRecord seriesRecord, string referencedFileId) { var currentImage = seriesRecord.LowerLevelDirectoryRecord; var imageInstanceUid = dataset.Get <string>(DicomTag.SOPInstanceUID); while (currentImage != null) { if (currentImage.Get <string>(DicomTag.ReferencedSOPInstanceUIDInFile) == imageInstanceUid) { return; } if (currentImage.NextDirectoryRecord != null) { currentImage = currentImage.NextDirectoryRecord; } else { //no more patient records, break the loop break; } } var newImage = CreateRecordSequenceItem(DicomDirectoryRecordType.Image, dataset); newImage.AddOrUpdate(DicomTag.ReferencedFileID, referencedFileId); newImage.AddOrUpdate(DicomTag.ReferencedSOPClassUIDInFile, metaFileInfo.MediaStorageSOPClassUID.UID); newImage.AddOrUpdate(DicomTag.ReferencedSOPInstanceUIDInFile, metaFileInfo.MediaStorageSOPInstanceUID.UID); newImage.AddOrUpdate(DicomTag.ReferencedTransferSyntaxUIDInFile, metaFileInfo.TransferSyntax.UID); if (currentImage != null) { //study not found under patient record currentImage.NextDirectoryRecord = newImage; } else { //no studies record found under patient record seriesRecord.LowerLevelDirectoryRecord = newImage; } }
public IAsyncResult BeginWrite(IByteTarget target, DicomFileMetaInformation fileMetaInfo, DicomDataset dataset, AsyncCallback callback, object state) { _target = target; _fileMetaInfo = fileMetaInfo; _dataset = dataset; _async = new EventAsyncResult(callback, state); byte[] preamble = new byte[132]; preamble[128] = (byte)'D'; preamble[129] = (byte)'I'; preamble[130] = (byte)'C'; preamble[131] = (byte)'M'; _target.Write(preamble, 0, 132, OnCompletePreamble, null); return(_async); }
public void Read_CompressedImage_RecognizeTransferSyntax() { using var stream = File.OpenRead(TestData.Resolve("CT1_J2KI")); var source = new StreamByteSource(stream); var reader = new DicomFileReader(); var fileMetaInfo = new DicomFileMetaInformation(); var dataset = new DicomDataset(); reader.Read( source, new DicomDatasetReaderObserver(fileMetaInfo), new DicomDatasetReaderObserver(dataset)); var expected = DicomTransferSyntax.JPEG2000Lossy; var actual = reader.Syntax; Assert.Equal(expected, actual); }
public void Read_CompressedImage_RecognizeTransferSyntax() { using (var stream = File.OpenRead(@".\Test Data\CT1_J2KI")) { var source = new StreamByteSource(stream); var reader = new DicomFileReader(); var fileMetaInfo = new DicomFileMetaInformation(); var dataset = new DicomDataset(); reader.Read( source, new DicomDatasetReaderObserver(fileMetaInfo), new DicomDatasetReaderObserver(dataset)); var expected = DicomTransferSyntax.JPEG2000Lossy; var actual = reader.Syntax; Assert.Equal(expected, actual); } }
public void Read_ValidSource_ReturnsSuccess() { using var stream = File.OpenRead(TestData.Resolve("CT1_J2KI")); var source = new StreamByteSource(stream); var reader = new DicomFileReader(); var fileMetaInfo = new DicomFileMetaInformation(); var dataset = new DicomDataset(); const DicomReaderResult expected = DicomReaderResult.Success; var actual = reader.Read( source, new DicomDatasetReaderObserver(fileMetaInfo), new DicomDatasetReaderObserver(dataset)); Assert.Equal(expected, actual); var modality = dataset.GetString(DicomTag.Modality); Assert.Equal("CT", modality); }
public async Task ReadAsync_CompressedImage_RecognizeTransferSyntax() { using (var stream = File.OpenRead(@".\Test Data\CT1_J2KI")) { var source = new StreamByteSource(stream); var reader = new DicomFileReader(); var fileMetaInfo = new DicomFileMetaInformation(); var dataset = new DicomDataset(); await reader.ReadAsync( source, new DicomDatasetReaderObserver(fileMetaInfo), new DicomDatasetReaderObserver(dataset)); var expected = DicomTransferSyntax.JPEG2000Lossy; var actual = reader.Syntax; Assert.Equal(expected, actual); } }
public void Read_ValidSource_ReturnsSuccess() { using (var stream = File.OpenRead(@".\Test Data\CT1_J2KI")) { var source = new StreamByteSource(stream); var reader = new DicomFileReader(); var fileMetaInfo = new DicomFileMetaInformation(); var dataset = new DicomDataset(); const DicomReaderResult expected = DicomReaderResult.Success; var actual = reader.Read( source, new DicomDatasetReaderObserver(fileMetaInfo), new DicomDatasetReaderObserver(dataset)); Assert.Equal(expected, actual); var modality = dataset.Get<string>(DicomTag.Modality); Assert.Equal("CT", modality); } }
public void Construction_sets_validation_to_false_copy_constructor(bool validate, string sopInstanceUid, bool expectedError) { DicomFileMetaInformation existing, metaInfo; var dataset = new DicomDataset { ValidateItems = validate }; if (expectedError) { // we test the dataset as well here Assert.Throws <DicomValidationException>(() => dataset.Add( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.SecondaryCaptureImageStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, sopInstanceUid))); // such that we can construct it dataset.ValidateItems = false; dataset.AddOrUpdate( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.SecondaryCaptureImageStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, sopInstanceUid)); dataset.ValidateItems = validate; Assert.Throws <DicomValidationException>(() => new DicomFileMetaInformation(dataset)); return; } else { dataset.Add( new DicomUniqueIdentifier(DicomTag.SOPClassUID, DicomUID.SecondaryCaptureImageStorage), new DicomUniqueIdentifier(DicomTag.SOPInstanceUID, sopInstanceUid)); existing = new DicomFileMetaInformation(dataset); } metaInfo = new DicomFileMetaInformation(existing); Assert.Equal(validate, metaInfo.ValidateItems); Assert.Equal(validate, metaInfo.AutoValidate); Assert.Equal(sopInstanceUid, metaInfo.MediaStorageSOPInstanceUID.UID); }
/// <summary> /// Write DICOM Part 10 object to <paramref name="target"/> asynchronously. /// </summary> /// <param name="target">Byte target subject to writing.</param> /// <param name="fileMetaInfo">File meta information.</param> /// <param name="dataset">Dataset.</param> /// <returns>Awaitable <see cref="Task"/>.</returns> public async Task WriteAsync(IByteTarget target, DicomFileMetaInformation fileMetaInfo, DicomDataset dataset) { await WritePreambleAsync(target).ConfigureAwait(false); await WriteFileMetaInfoAsync(target, fileMetaInfo, _options).ConfigureAwait(false); await WriteDatasetAsync(target, fileMetaInfo.TransferSyntax, dataset, _options).ConfigureAwait(false); }
public void Write(IByteTarget target, DicomFileMetaInformation fileMetaInfo, DicomDataset dataset) { EndWrite(BeginWrite(target, fileMetaInfo, dataset, null, null)); }
/// <summary> /// Load all of the Elements in the DCM Meta /// </summary> /// <param name="dcm">the DICOM file</param> private void LoadAndShowDCMMetaInfo(DicomFile dcm) { //Show the message of DCM file to the listview in the dialog. DicomDataset dcmDataset = dcm.Dataset; DicomFileMetaInformation dcmMetaInfo = dcm.FileMetaInfo; listView1.BeginUpdate(); //DICOM MetaInfo if (!String.IsNullOrWhiteSpace(dcmMetaInfo.MediaStorageSOPClassUID == null?"":dcmMetaInfo.MediaStorageSOPClassUID.ToString())) { //Insert the ImplementationClassUID ListViewItem newItem = new ListViewItem("0002"); newItem.SubItems.Add("0002"); newItem.SubItems.Add(dcmMetaInfo.MediaStorageSOPClassUID.ToString()); listView1.Items.Add(newItem); } if (!String.IsNullOrWhiteSpace(dcmMetaInfo.MediaStorageSOPInstanceUID == null?"":dcmMetaInfo.MediaStorageSOPInstanceUID.ToString())) { //Insert the ImplementationClassUID ListViewItem newItem = new ListViewItem("0002"); newItem.SubItems.Add("0003"); newItem.SubItems.Add(dcmMetaInfo.MediaStorageSOPInstanceUID.ToString()); listView1.Items.Add(newItem); } if (!String.IsNullOrWhiteSpace(dcmMetaInfo.TransferSyntax == null?"":dcmMetaInfo.TransferSyntax.ToString())) { //Insert the ImplementationClassUID ListViewItem newItem = new ListViewItem("0002"); newItem.SubItems.Add("0010"); newItem.SubItems.Add(dcmMetaInfo.TransferSyntax.ToString()); listView1.Items.Add(newItem); } if (!String.IsNullOrWhiteSpace(dcmMetaInfo.ImplementationClassUID == null?"":dcmMetaInfo.ImplementationClassUID.ToString())) { //Insert the ImplementationClassUID ListViewItem newItem = new ListViewItem("0002"); newItem.SubItems.Add("0012"); newItem.SubItems.Add(dcmMetaInfo.ImplementationClassUID.ToString()); listView1.Items.Add(newItem); } if (!String.IsNullOrWhiteSpace(dcmMetaInfo.ImplementationVersionName == null?"":dcmMetaInfo.ImplementationVersionName.ToString())) { //Insert the ImplementationClassUID ListViewItem newItem = new ListViewItem("0002"); newItem.SubItems.Add("0013"); newItem.SubItems.Add(dcmMetaInfo.ImplementationVersionName.ToString()); listView1.Items.Add(newItem); } //Patient Info string patientName = dcmDataset.Get <string>(DicomTag.PatientName, ""); if (!String.IsNullOrWhiteSpace(patientName)) { ListViewItem newItem = new ListViewItem("0010"); newItem.SubItems.Add("0010"); newItem.SubItems.Add(patientName); listView1.Items.Add(newItem); } string patientID = dcmDataset.Get <string>(DicomTag.PatientID, ""); if (!String.IsNullOrWhiteSpace(patientID)) { ListViewItem newItem = new ListViewItem("0010"); newItem.SubItems.Add("0020"); newItem.SubItems.Add(patientID); listView1.Items.Add(newItem); } string patientBirth = dcmDataset.Get <string>(DicomTag.PatientBirthDate); if (!String.IsNullOrWhiteSpace(patientBirth)) { ListViewItem newItem = new ListViewItem("0010"); newItem.SubItems.Add("0030"); newItem.SubItems.Add(patientBirth); listView1.Items.Add(newItem); } string patientSex = dcmDataset.Get <string>(DicomTag.PatientSex); if (!String.IsNullOrWhiteSpace(patientSex)) { ListViewItem newItem = new ListViewItem("0010"); newItem.SubItems.Add("0040"); newItem.SubItems.Add(patientSex); listView1.Items.Add(newItem); } string patientAge = dcmDataset.Get <string>(DicomTag.PatientAge); if (!String.IsNullOrWhiteSpace(patientAge)) { ListViewItem newItem = new ListViewItem("0010"); newItem.SubItems.Add("1010"); newItem.SubItems.Add(patientAge); listView1.Items.Add(newItem); } //Study & Series Info string studyDate = dcmDataset.Get <string>(DicomTag.StudyDate); if (!String.IsNullOrWhiteSpace(studyDate)) { ListViewItem newItem = new ListViewItem("0008"); newItem.SubItems.Add("0020"); newItem.SubItems.Add(studyDate); listView1.Items.Add(newItem); } string studyTime = dcmDataset.Get <string>(DicomTag.StudyTime); if (!String.IsNullOrWhiteSpace(studyTime)) { ListViewItem newItem = new ListViewItem("0008"); newItem.SubItems.Add("0030"); newItem.SubItems.Add(studyTime); listView1.Items.Add(newItem); } string studyInstanceID = dcmDataset.Get <string>(DicomTag.StudyInstanceUID); if (!String.IsNullOrWhiteSpace(studyInstanceID)) { ListViewItem newItem = new ListViewItem("0020"); newItem.SubItems.Add("000D"); newItem.SubItems.Add(studyInstanceID); listView1.Items.Add(newItem); } string seriesInstanceID = dcmDataset.Get <string>(DicomTag.SeriesInstanceUID); if (!String.IsNullOrWhiteSpace(seriesInstanceID)) { ListViewItem newItem = new ListViewItem("0020"); newItem.SubItems.Add("000E"); newItem.SubItems.Add(seriesInstanceID); listView1.Items.Add(newItem); } string studyID = dcmDataset.Get <string>(DicomTag.StudyID); if (!String.IsNullOrWhiteSpace(studyID)) { ListViewItem newItem = new ListViewItem("0020"); newItem.SubItems.Add("0010"); newItem.SubItems.Add(studyID); listView1.Items.Add(newItem); } //Image Info string imageHeight = dcmDataset.Get <string>(DicomTag.Rows); if (!String.IsNullOrWhiteSpace(imageHeight)) { ListViewItem newItem = new ListViewItem("0028"); newItem.SubItems.Add("0010"); newItem.SubItems.Add(imageHeight); listView1.Items.Add(newItem); } string imageWidth = dcmDataset.Get <string>(DicomTag.Columns); if (!String.IsNullOrWhiteSpace(imageWidth)) { ListViewItem newItem = new ListViewItem("0028"); newItem.SubItems.Add("0011"); newItem.SubItems.Add(imageWidth); listView1.Items.Add(newItem); } string bitsAlloctaed = dcmDataset.Get <string>(DicomTag.BitsAllocated); if (!String.IsNullOrWhiteSpace(bitsAlloctaed)) { ListViewItem newItem = new ListViewItem("0028"); newItem.SubItems.Add("0100"); newItem.SubItems.Add(bitsAlloctaed); listView1.Items.Add(newItem); } string bitsStored = dcmDataset.Get <string>(DicomTag.BitsStored); if (!String.IsNullOrWhiteSpace(bitsStored)) { ListViewItem newItem = new ListViewItem("0028"); newItem.SubItems.Add("0101"); newItem.SubItems.Add(bitsStored); listView1.Items.Add(newItem); } string highBits = dcmDataset.Get <string>(DicomTag.HighBit); if (!String.IsNullOrWhiteSpace(highBits)) { ListViewItem newItem = new ListViewItem("0028"); newItem.SubItems.Add("0102"); newItem.SubItems.Add(highBits); listView1.Items.Add(newItem); } listView1.EndUpdate(); }
/// <summary> /// Write DICOM Part 10 object to <paramref name="target"/>. /// </summary> /// <param name="target">Byte target subject to writing.</param> /// <param name="fileMetaInfo">File meta information.</param> /// <param name="dataset">Dataset.</param> public void Write(IByteTarget target, DicomFileMetaInformation fileMetaInfo, DicomDataset dataset) { WritePreamble(target); WriteFileMetaInfo(target, fileMetaInfo, this.options); WriteDataset(target, fileMetaInfo.TransferSyntax, dataset, this.options); }
private void CreateImageRecord(DicomFileMetaInformation metaFileInfo, DicomDataset dataset, DicomDirectoryRecord seriesRecord, string referencedFileId) { var currentImage = seriesRecord.LowerLevelDirectoryRecord; var imageInstanceUid = dataset.Get<string>(DicomTag.SOPInstanceUID); while (currentImage != null) { if (currentImage.Get<string>(DicomTag.ReferencedSOPInstanceUIDInFile) == imageInstanceUid) { return; } if (currentImage.NextDirectoryRecord != null) { currentImage = currentImage.NextDirectoryRecord; } else { //no more patient records, break the loop break; } } var newImage = CreateRecordSequenceItem(DicomDirectoryRecordType.Image, dataset); newImage.Add(DicomTag.ReferencedFileID, referencedFileId); newImage.Add(DicomTag.ReferencedSOPClassUIDInFile, metaFileInfo.MediaStorageSOPClassUID.UID); newImage.Add(DicomTag.ReferencedSOPInstanceUIDInFile, metaFileInfo.MediaStorageSOPInstanceUID.UID); newImage.Add(DicomTag.ReferencedTransferSyntaxUIDInFile, metaFileInfo.TransferSyntax.UID); if (currentImage != null) { //study not found under patient record currentImage.NextDirectoryRecord = newImage; } else { //no studies record found under patient record seriesRecord.LowerLevelDirectoryRecord = newImage; } }
public void Construction_sets_validation_to_false_default_constructor() { var metaInfo = new DicomFileMetaInformation(); Assert.False(metaInfo.ValidateItems); }
private void LoadAndShowDCMMetaInfo(DicomFile dcm) { DicomDataset dcmDataset = dcm.Dataset; DicomFileMetaInformation dcmMetaInfo = dcm.FileMetaInfo; }
/// <summary> /// Write DICOM Part 10 object to <paramref name="target"/> asynchronously. /// </summary> /// <param name="target">Byte target subject to writing.</param> /// <param name="fileMetaInfo">File meta information.</param> /// <param name="dataset">Dataset.</param> /// <returns>Awaitable <see cref="Task"/>.</returns> public async Task WriteAsync(IByteTarget target, DicomFileMetaInformation fileMetaInfo, DicomDataset dataset) { await WritePreambleAsync(target).ConfigureAwait(false); await WriteFileMetaInfoAsync(target, fileMetaInfo, this.options).ConfigureAwait(false); await WriteDatasetAsync(target, fileMetaInfo.TransferSyntax, dataset, this.options).ConfigureAwait(false); }