public static UserInfo ReadUserInfo(DICOMBinaryReader dr) { AssertItemType(dr, "User Info", ItemType.USER_INFO); var ui = new UserInfo(); dr.Skip(2); // PDU ID and Reserved Null Byte var length = LengthReader.ReadBigEndian(dr, 2); if (length > 0) { ui.MaxPDULength = (int)ReadMaxLength(dr); if (dr.StreamPosition >= dr.StreamLength) { return(ui); } ui.ImplementationUID = ReadImplementationClassUID(dr); if (dr.StreamPosition >= dr.StreamLength) { return(ui); } if (dr.Peek(1)[0] == (byte)ItemType.ASYNCHRONOUS_OPERATIONS_WINDOW) { ui.AsynchronousOperations = ReadAsyncOperations(dr); } if (dr.StreamPosition >= dr.StreamLength) { return(ui); } if (dr.Peek(1)[0] == (byte)ItemType.IMPLEMENTATION_VERSION_NAME) { ui.ImplementationVersion = ReadImplementationVersion(dr); } if (dr.StreamPosition >= dr.StreamLength) { return(ui); } if (dr.Peek(1)[0] == (byte)ItemType.SCPSCU_ROLE_SELECTION) { ui.ImplementationVersion = ReadSCPSCURoleSelection(dr); } } return(ui); }
public static UserInfo ReadUserInfo(DICOMBinaryReader dr) { AssertItemType(dr, "User Info", ItemType.USER_INFO); var ui = new UserInfo(); dr.Skip(2); // PDU ID and Reserved Null Byte var length = LengthReader.ReadBigEndian(dr, 2); if (length > 0) { ui.MaxPDULength = (int)ReadMaxLength(dr); ui.ImplementationUID = ReadImplementationClassUID(dr); if (dr.Peek(1)[0] == (byte)ItemType.ASYNCHRONOUS_OPERATIONS_WINDOW) { ui.AsynchronousOperations = ReadAsyncOperations(dr); } ui.ImplementationVersion = ReadImplementationVersion(dr); } return(ui); }
public static (string Value, PreambleStatus Status) Read(string filePath, string group, string element) { TransferSyntax syntax = TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN; PreambleStatus preambleStatus; DICOMObject dicomObject = null; using (var dicomBinaryReader = new DICOMBinaryReader(filePath)) { preambleStatus = Read(dicomBinaryReader); if (preambleStatus == PreambleStatus.Ok || preambleStatus == PreambleStatus.MismatchPreamble128) { List <IDICOMElement> metaElements = DICOMFileReader.ReadFileMetadata(dicomBinaryReader, ref syntax); List <IDICOMElement> elements = metaElements.Concat(DICOMElementReader.ReadAllElements(dicomBinaryReader, syntax)).ToList(); dicomObject = new DICOMObject(elements); } } IDICOMElement value = dicomObject?.Elements.FirstOrDefault(d => d.Tag.Group == group && d.Tag.Element == element); return(value?.DData.ToString(), preambleStatus); }
/// <summary> /// Creates a clone of this DICOM object /// </summary> /// <returns>a new copied DICOM object</returns> public DICOMObject Clone() { List <IDICOMElement> copy = new List <IDICOMElement>(); foreach (var el in Elements) { using (var ms = new MemoryStream()) { using (var dw = new DICOMBinaryWriter(ms)) { DICOMElementWriter.Write(dw, DICOMIOSettings.Default(), el); } using (var dr = new DICOMBinaryReader(ms.ToArray())) { copy.Add(DICOMElementReader.ReadElementImplicitLittleEndian(dr)); } } } return(new DICOMObject(copy)); }
public void WriteDecimalString() { var ds = new DecimalString(); ds.DData_ = Enumerable.Range(1, 15000).Select(i => ((double)i) + 0.005).ToList(); ds.Tag = new Tag("00082130"); byte[] written; var settings = DICOMIOSettings.Default(); using (var ms = new MemoryStream()) { using (var dw = new DICOMBinaryWriter(ms)) { DICOMElementWriter.Write(dw, DICOMIOSettings.Default(), ds); } written = ms.ToArray(); } using (var dr = new DICOMBinaryReader(written)) { var read = DICOMElementReader.ReadElementImplicitLittleEndian(dr) as DecimalString; CollectionAssert.AreEqual(ds.DData_, read.Data_); } }
private static string ReadSCPSCURoleSelection(DICOMBinaryReader dr) { return(ReadUIDItem(dr, "SCU/SCP Role", ItemType.SCPSCU_ROLE_SELECTION)); }
public static string ReadImplementationVersion(DICOMBinaryReader dr) { return(ReadUIDItem(dr, "Implementation Version", ItemType.IMPLEMENTATION_VERSION_NAME)); }
public static string ReadImplementationClassUID(DICOMBinaryReader dr) { return(ReadUIDItem(dr, "Implementation Class UID", ItemType.IMPLEMENTATION_CLASS_UID)); }
public static string ReadApplicationContext(DICOMBinaryReader dr) { return(ReadUIDItem(dr, "Application Context", ItemType.APPLICATION_CONTEXT)); }
public static string ReadAbstractSyntax(DICOMBinaryReader dr) { return(ReadUIDItem(dr, "Abstact Syntax", ItemType.ABSTRACT_SYNTAX)); }
public static string ReadTransferSyntax(DICOMBinaryReader dr) { return(ReadUIDItem(dr, "Transfer Syntax", ItemType.TRANSFER_SYNTAX)); }