コード例 #1
0
ファイル: DimseDataClasses.cs プロジェクト: ewcasas/DVTK
        /// <summary>
        /// Serialize DVT Detail Data to Xml.
        /// </summary>
        /// <param name="streamWriter">Stream writer to serialize to.</param>
        /// <param name="level">Recursion level. 0 = Top.</param> 
        /// <returns>bool - success/failure</returns>
        public override bool DvtDetailToXml(StreamWriter streamWriter, int level)
        {
            // try to get the specific character set attribute
            // - this is needed to instantiate the DICOM to Unicode converter.
            DicomUnicodeConverter dicomUnicodeConverter = null;
            Attribute specificCharacterSetAttribute = this.GetAttribute(Tag.SPECIFIC_CHARACTER_SET);
            if ((specificCharacterSetAttribute != null) &&
                (specificCharacterSetAttribute.ValueRepresentation == VR.CS))
            {
                CodeString codeString = (CodeString)specificCharacterSetAttribute.DicomValue;
                String specificCharacterSetValue = String.Empty;
                for (int i = 0; i < codeString.Values.Count; i++)
                {
                    specificCharacterSetValue += codeString.Values[i];
                    if ((i + 1) < codeString.Values.Count)
                    {
                        specificCharacterSetValue += "\\";
                    }
                }

                // used fixed location for Unicode character sets based on the application start-up directory
                //String baseDirectory = String.Format("{0}CHARACTERSETS", System.AppDomain.CurrentDomain.BaseDirectory);
                String baseDirectory = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "CHARACTERSETS");
                dicomUnicodeConverter = new DicomUnicodeConverter(baseDirectory);
                if (dicomUnicodeConverter.Install(specificCharacterSetValue) == false)
                {
                    dicomUnicodeConverter = null;
                }
            }

            // serialize the dataset
            bool result = false;
            streamWriter.WriteLine("<Dataset Name=\"{0}\">", IodId);
            foreach (Attribute attribute in this)
            {
                attribute.DicomUnicodeConverter = dicomUnicodeConverter;
                result = attribute.DvtDetailToXml(streamWriter, level);
            }
            streamWriter.WriteLine("</Dataset>");
            return result;
        }
コード例 #2
0
ファイル: IDvtToXml.cs プロジェクト: ewcasas/DVTK
        /// <summary>
        /// Convert the incoming string into a Unicode representation in XML format.
        /// The conversion is only done if 8-bit chars are present in the inString - otherwise
        /// an empty string is returned.
        /// </summary>
        /// <param name="dicomUnicodeConvertor">Instantiated DICOM to Unicode Convertor.</param>
        /// <param name="inString">String to be converted.</param>
        /// <returns>Converted Unicode XML string.</returns>
        public static System.String ConvertStringToXmlUnicode(DicomUnicodeConverter dicomUnicodeConvertor, System.String inString)
        {
            String outString = String.Empty;
            if ((dicomUnicodeConvertor == null) ||
                (inString == null) ||
                (inString == System.String.Empty))
            {
                return outString;
            }

            bool only7BitCharsPresent = true;
            byte[] dicomString = new byte[inString.Length];
            for (int i = 0; i < inString.Length; i++)
            {
                dicomString[i] = (byte)inString[i];
                if ((dicomString[i] > 0x80) ||
                    (dicomString[i] == 0x1B))
                {
                    only7BitCharsPresent = false;
                }
            }
            if (only7BitCharsPresent == false)
            {
                UInt16[] unicode = dicomUnicodeConvertor.Unicode(dicomString);
                outString = dicomUnicodeConvertor.UnicodeAsXml(unicode);
                if (outString == String.Empty)
                {
                    outString = "Specific Character Set not supported for display.";
                }
            }
            return outString;
        }
コード例 #3
0
        /// <summary>
        /// Serialize DVT Summary Data to Xml.
        /// </summary>
        /// <param name="streamWriter">Stream writer to serialize to.</param>
        /// <param name="level">Recursion level. 0 = Top.</param>
        /// <returns>bool - success/failure</returns>
        public bool DvtSummaryToXml(StreamWriter streamWriter, int level)
        {
            if (
                (streamWriter != null) &&
                this.ContainsMessages()
                )
            {
                // try to get the specific character set attribute
                // - this is needed to instantiate the DICOM to Unicode converter.
                // used fixed location for Unicode character sets based on the application start-up directory
                //String baseDirectory = String.Format("{0}CHARACTERSETS", System.AppDomain.CurrentDomain.BaseDirectory);
                String baseDirectory = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "CHARACTERSETS");
                DicomUnicodeConverter dicomUnicodeConverter = new DicomUnicodeConverter(baseDirectory);
                if (dicomUnicodeConverter.Install(_SpecificCharacterSetValues) == false)
                {
                    dicomUnicodeConverter = null;
                }

                streamWriter.WriteLine("<ValidationResults>");
                streamWriter.WriteLine("<ValidationDicomMessage>");
                streamWriter.WriteLine("<MessageUID>{0}</MessageUID>", MessageUID);
                streamWriter.WriteLine("<Name>{0}</Name>", Name);
                if(Name == "Media Directory")
                    streamWriter.WriteLine("<DICOMDIRName>{0}</DICOMDIRName>", DICOMDIRName);

                if (Modules.ContainsMessages())
                {
                    Modules.DisplayConditionText = ConditionTextDisplay;
                    Modules.DicomUnicodeConverter = dicomUnicodeConverter;
                    Modules.DvtSummaryToXml(streamWriter, level);
                }
                if ((AdditionalAttributes != null) &&
                    (AdditionalAttributes.ContainsMessages() == true))
                {
                    AdditionalAttributes.DisplayConditionText = ConditionTextDisplay;
                    AdditionalAttributes.DicomUnicodeConverter = dicomUnicodeConverter;
                    AdditionalAttributes.DvtSummaryToXml(streamWriter, level);
                }

                Messages.DvtDetailToXml(streamWriter, level);

                if (DirectoryRecordTOC != null)
                {
                    DirectoryRecordTOC.DvtSummaryToXml(streamWriter, level);
                }
                streamWriter.WriteLine("</ValidationDicomMessage>");
                streamWriter.WriteLine("</ValidationResults>");
            }
            return true;
        }