/// <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; }
/// <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; }