Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        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_);
            }
        }
Esempio n. 6
0
 private static string ReadSCPSCURoleSelection(DICOMBinaryReader dr)
 {
     return(ReadUIDItem(dr, "SCU/SCP Role", ItemType.SCPSCU_ROLE_SELECTION));
 }
Esempio n. 7
0
 public static string ReadImplementationVersion(DICOMBinaryReader dr)
 {
     return(ReadUIDItem(dr, "Implementation Version", ItemType.IMPLEMENTATION_VERSION_NAME));
 }
Esempio n. 8
0
 public static string ReadImplementationClassUID(DICOMBinaryReader dr)
 {
     return(ReadUIDItem(dr, "Implementation Class UID", ItemType.IMPLEMENTATION_CLASS_UID));
 }
Esempio n. 9
0
 public static string ReadApplicationContext(DICOMBinaryReader dr)
 {
     return(ReadUIDItem(dr, "Application Context", ItemType.APPLICATION_CONTEXT));
 }
Esempio n. 10
0
 public static string ReadAbstractSyntax(DICOMBinaryReader dr)
 {
     return(ReadUIDItem(dr, "Abstact Syntax", ItemType.ABSTRACT_SYNTAX));
 }
Esempio n. 11
0
 public static string ReadTransferSyntax(DICOMBinaryReader dr)
 {
     return(ReadUIDItem(dr, "Transfer Syntax", ItemType.TRANSFER_SYNTAX));
 }