'Declaration Public NotInheritable Class DicomFile Inherits Vintasoft.Imaging.Codecs.ImageFiles.ImageFile(Of TPage,TPageCollection)
public sealed class DicomFile : Vintasoft.Imaging.Codecs.ImageFiles.ImageFile<TPage,TPageCollection>
public __gc __sealed class DicomFile : public Vintasoft.Imaging.Codecs.ImageFiles.ImageFile<TPage,TPageCollection*>*
public ref class DicomFile sealed : public Vintasoft.Imaging.Codecs.ImageFiles.ImageFile<TPage,TPageCollection^>^
Этот C#/VB.Код NET показывает, как получить информацию о пациенте (метаданные) из DICOM файла.
''' <summary> ''' Gets and prints information about DICOM file. ''' </summary> ''' <param name="filePath">Path to a DICOm file.</param> Public Sub GetDicomFileInfo(filePath As String) ' open DICOM file Using file As New Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomFile(filePath) ' show file name and page count System.Console.WriteLine("File: {0} Page count: {1}", System.IO.Path.GetFileName(filePath), file.Pages.Count) System.Console.WriteLine() ' get DICOM file metadata Dim fileMetadata As New Vintasoft.Imaging.Metadata.DicomPageMetadata(file) ' for each metadata node For Each children As Vintasoft.Imaging.Metadata.DicomDataElementMetadata In fileMetadata ' print information about metadata node PrintMetadataNodeInfo(children) System.Console.WriteLine() Next End Using End Sub ''' <summary> ''' Prints information about metadata node. ''' </summary> ''' <param name="node">Metadata node.</param> Public Sub PrintMetadataNodeInfo(node As Vintasoft.Imaging.Metadata.MetadataNode) ' if node is DicomDataElementMetadata If TypeOf node Is Vintasoft.Imaging.Metadata.DicomDataElementMetadata Then Dim dataElementMetadata As Vintasoft.Imaging.Metadata.DicomDataElementMetadata = DirectCast(node, Vintasoft.Imaging.Metadata.DicomDataElementMetadata) ' show data element info System.Console.Write("(0x{0},0x{1}) {2,-40} {3}", dataElementMetadata.GroupNumber.ToString("X").PadLeft(4, "0"C), dataElementMetadata.ElementNumber.ToString("X").PadLeft(4, "0"C), dataElementMetadata.Name, GetValueAsString(dataElementMetadata)) End If ' show children info For Each children As Vintasoft.Imaging.Metadata.MetadataNode In node PrintMetadataNodeInfo(children) Next End Sub ''' <summary> ''' Returns the metadata value as a string. ''' </summary> ''' <param name="node">The metadata node.</param> Private Function GetValueAsString(node As Vintasoft.Imaging.Metadata.DicomDataElementMetadata) As String Dim value As Object = node.Value ' if node value is empty If value Is Nothing Then Return "NULL" End If ' if node value is array If TypeOf value Is System.Array Then Dim array As System.Array = DirectCast(value, System.Array) ' if array is empty If array.Length = 0 Then Return "Empty Array" End If ' get array length Dim length As Integer = System.Math.Min(50, array.Length) ' convert array to a string Dim result As String = "{" For i As Integer = 0 To length - 2 result += String.Format("{0}, ", ConvertToString(array.GetValue(i))) Next result += String.Format("{0}", ConvertToString(array.GetValue(length - 1))) If array.Length <> length Then result += " ..." End If result += "}" Return result ' if node contains UID ElseIf TypeOf value Is Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomUidBase Then ' return UID value Return ConvertToString(DirectCast(value, Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomUidBase).Value) Else Return ConvertToString(value) End If End Function ''' <summary> ''' Converts the specified data to a string. ''' </summary> ''' <param name="data">The data.</param> Private Function ConvertToString(data As Object) As String Return System.Convert.ToString(data, System.Globalization.CultureInfo.CurrentCulture) End Function ' This code example produces the following output: File: brain_005.dcm Pages count: 1 ' (0x0002,0x0001) File Meta Information Version {0, 1} (0x0002,0x0002) Media Storage SOP Class UID 1.2.840.10008.5.1.4.1.1.4 (0x0002,0x0003) Media Storage SOP Instance UID 0.0.0.0.1.8811.2.5.20010413115754.12432 (0x0002,0x0010) Transfer Syntax UID 1.2.840.10008.1.2.1 (0x0002,0x0012) Implementation Class UID 0.0.0.0 (0x0002,0x0013) Implementation Version Name NOTSPECIFIED (0x0002,0x0016) Source Application Entity Title NOTSPECIFIED (0x0008,0x0008) Image Type {ORIGINAL, PRIMARY, MPR} (0x0008,0x0016) SOP Class UID 1.2.840.10008.5.1.4.1.1.4 (0x0008,0x0018) SOP Instance UID 0.0.0.0.1.8811.2.5.20010413115754.12432 (0x0008,0x0020) Study Date 16.03.2001 0:00:00 (0x0008,0x0021) Series Date 16.03.2001 0:00:00 (0x0008,0x0022) Acquisition Date 16.03.2001 0:00:00 (0x0008,0x0023) Content Date 23.03.2001 0:00:00 (0x0008,0x0030) Study Time 14:30:08 (0x0008,0x0031) Series Time 14:34:14 (0x0008,0x0032) Acquisition Time 14:34:15 (0x0008,0x0033) Content Time 14:30:10 (0x0008,0x0050) Accession Number NULL (0x0008,0x0060) Modality MR (0x0008,0x0070) Manufacturer GE Medical Systems (0x0008,0x0080) Institution Name (0x0008,0x0090) Referring Physician's Name (0x0008,0x1010) Station Name MRS1 (0x0008,0x1030) Study Description BRAIN (0x0008,0x103E) Series Description FSE PD AXIAL OBL (0x0008,0x1050) Performing Physician's Name (0x0008,0x1070) Operators' Name EC (0x0008,0x1090) Manufacturer's Model Name SIGNA (0x0010,0x0010) Patient's Name (0x0010,0x0020) Patient ID 123565 (0x0010,0x0030) Patient's Birth Date NULL (0x0010,0x0040) Patient's Sex F (0x0010,0x1010) Patient's Age 028Y (0x0010,0x1030) Patient's Weight 61,235 (0x0010,0x21B0) Additional Patient History NULL (0x0018,0x0020) Scanning Sequence SE (0x0018,0x0021) Sequence Variant SK (0x0018,0x0022) Scan Options SP (0x0018,0x0023) MR Acquisition Type 2D (0x0018,0x0024) Sequence Name fse (0x0018,0x0050) Slice Thickness 5 (0x0018,0x0080) Repetition Time 2300 (0x0018,0x0081) Echo Time 22 (0x0018,0x0083) Number of Averages 1 (0x0018,0x0084) Imaging Frequency 63,8615 (0x0018,0x0086) Echo Number(s) 1 (0x0018,0x0087) Magnetic Field Strength 1,5 (0x0018,0x0088) Spacing Between Slices 2 (0x0018,0x0089) Number of Phase Encoding Steps 256 (0x0018,0x0091) Echo Train Length 8 (0x0018,0x0095) Pixel Bandwidth 31,25 (0x0018,0x1020) Software Version(s) 3 (0x0018,0x1030) Protocol Name CLINICAL BRAIN (0x0018,0x1088) Heart Rate 0 (0x0018,0x1090) Cardiac Number of Images 0 (0x0018,0x1094) Trigger Window 0 (0x0018,0x1100) Reconstruction Diameter 220 (0x0018,0x1250) Receive Coil Name HEAD (0x0018,0x1310) Acquisition Matrix {0, 256, 256, 0} (0x0018,0x1312) In-plane Phase Encoding Direction ROW (0x0018,0x1314) Flip Angle 90 (0x0018,0x1316) SAR 0,0313309 (0x0018,0x5100) Patient Position HFS (0x0020,0x000D) Study Instance UID 0.0.0.0.2.8811.20010413115754.12432 (0x0020,0x000E) Series Instance UID 0.0.0.0.3.8811.2.20010413115754.12432 (0x0020,0x0010) Study ID 8811 (0x0020,0x0011) Series Number 2 (0x0020,0x0012) Acquisition Number 31748 (0x0020,0x0013) Instance Number 5 (0x0020,0x0020) Patient Orientation {L, PH} (0x0020,0x0030) Image Position {-110,5, -82,1063, -44,9575} (0x0020,0x0032) Image Position (Patient) {-110,5, -82,1063, -44,9575} (0x0020,0x0035) Image Orientation {1, 0, 0, 0, 0,99096, 0,134158} (0x0020,0x0037) Image Orientation (Patient) {1, 0, 0, 0, 0,99096, 0,134158} (0x0020,0x0052) Frame of Reference UID 0.0.0.0.4.8811.2.20010413115754.12432 (0x0020,0x1002) Images in Acquisition 1 (0x0020,0x1040) Position Reference Indicator NA (0x0020,0x1041) Slice Location -30,2 (0x0028,0x0002) Samples per Pixel 1 (0x0028,0x0004) Photometric Interpretation MONOCHROME2 (0x0028,0x0010) Rows 256 (0x0028,0x0011) Columns 256 (0x0028,0x0030) Pixel Spacing {0,859375, 0,859375} (0x0028,0x0100) Bits Allocated 16 (0x0028,0x0101) Bits Stored 16 (0x0028,0x0102) High Bit 15 (0x0028,0x0103) Pixel Representation 1 (0x0028,0x0106) Smallest Image Pixel Value 0 (0x0028,0x0107) Largest Image Pixel Value 932 (0x0028,0x0120) Pixel Padding Value 0 (0x0028,0x1050) Window Center 0 (0x0028,0x1051) Window Width 0 (0x0028,0x1052) Rescale Intercept 0 (0x0028,0x1053) Rescale Slope 1 (0x0028,0x1054) Rescale Type SIGNAL INTENSITY (UNITLESS) (0x7FE0,0x0010) Pixel Data {0, 0, 0, 0, 0, 0, 0, 0, 0 ...}
/// <summary> /// Gets and prints information about DICOM file. /// </summary> /// <param name="filePath">Path to a DICOm file.</param> public void GetDicomFileInfo(string filePath) { // open DICOM file using (Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomFile file = new Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomFile(filePath)) { // show file name and page count System.Console.WriteLine("File: {0} Page count: {1}", System.IO.Path.GetFileName(filePath), file.Pages.Count); System.Console.WriteLine(); // get DICOM file metadata Vintasoft.Imaging.Metadata.DicomPageMetadata fileMetadata = new Vintasoft.Imaging.Metadata.DicomPageMetadata(file); // for each metadata node foreach (Vintasoft.Imaging.Metadata.DicomDataElementMetadata children in fileMetadata) { // print information about metadata node PrintMetadataNodeInfo(children); System.Console.WriteLine(); } } } /// <summary> /// Prints information about metadata node. /// </summary> /// <param name="node">Metadata node.</param> public void PrintMetadataNodeInfo(Vintasoft.Imaging.Metadata.MetadataNode node) { // if node is DicomDataElementMetadata if (node is Vintasoft.Imaging.Metadata.DicomDataElementMetadata) { Vintasoft.Imaging.Metadata.DicomDataElementMetadata dataElementMetadata = (Vintasoft.Imaging.Metadata.DicomDataElementMetadata)node; // show data element info System.Console.Write("(0x{0},0x{1}) {2,-40} {3}", dataElementMetadata.GroupNumber.ToString("X").PadLeft(4, '0'), dataElementMetadata.ElementNumber.ToString("X").PadLeft(4, '0'), dataElementMetadata.Name, GetValueAsString(dataElementMetadata)); } // show children info foreach (Vintasoft.Imaging.Metadata.MetadataNode children in node) PrintMetadataNodeInfo(children); } /// <summary> /// Returns the metadata value as a string. /// </summary> /// <param name="node">The metadata node.</param> private string GetValueAsString(Vintasoft.Imaging.Metadata.DicomDataElementMetadata node) { object value = node.Value; // if node value is empty if (value == null) return "NULL"; // if node value is array if (value is System.Array) { System.Array array = (System.Array)value; // if array is empty if (array.Length == 0) return "Empty Array"; // get array length int length = System.Math.Min(50, array.Length); // convert array to a string string result = "{"; for (int i = 0; i < length - 1; i++) result += string.Format("{0}, ", ConvertToString(array.GetValue(i))); result += string.Format("{0}", ConvertToString(array.GetValue(length - 1))); if (array.Length != length) result += " ..."; result += "}"; return result; } // if node contains UID else if (value is Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomUidBase) { // return UID value return ConvertToString(((Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomUidBase)value).Value); } else { return ConvertToString(value); } } /// <summary> /// Converts the specified data to a string. /// </summary> /// <param name="data">The data.</param> private string ConvertToString(object data) { return System.Convert.ToString(data, System.Globalization.CultureInfo.CurrentCulture); } /* This code example produces the following output: File: brain_005.dcm Pages count: 1 (0x0002,0x0001) File Meta Information Version {0, 1} (0x0002,0x0002) Media Storage SOP Class UID 1.2.840.10008.5.1.4.1.1.4 (0x0002,0x0003) Media Storage SOP Instance UID 0.0.0.0.1.8811.2.5.20010413115754.12432 (0x0002,0x0010) Transfer Syntax UID 1.2.840.10008.1.2.1 (0x0002,0x0012) Implementation Class UID 0.0.0.0 (0x0002,0x0013) Implementation Version Name NOTSPECIFIED (0x0002,0x0016) Source Application Entity Title NOTSPECIFIED (0x0008,0x0008) Image Type {ORIGINAL, PRIMARY, MPR} (0x0008,0x0016) SOP Class UID 1.2.840.10008.5.1.4.1.1.4 (0x0008,0x0018) SOP Instance UID 0.0.0.0.1.8811.2.5.20010413115754.12432 (0x0008,0x0020) Study Date 16.03.2001 0:00:00 (0x0008,0x0021) Series Date 16.03.2001 0:00:00 (0x0008,0x0022) Acquisition Date 16.03.2001 0:00:00 (0x0008,0x0023) Content Date 23.03.2001 0:00:00 (0x0008,0x0030) Study Time 14:30:08 (0x0008,0x0031) Series Time 14:34:14 (0x0008,0x0032) Acquisition Time 14:34:15 (0x0008,0x0033) Content Time 14:30:10 (0x0008,0x0050) Accession Number NULL (0x0008,0x0060) Modality MR (0x0008,0x0070) Manufacturer GE Medical Systems (0x0008,0x0080) Institution Name (0x0008,0x0090) Referring Physician's Name (0x0008,0x1010) Station Name MRS1 (0x0008,0x1030) Study Description BRAIN (0x0008,0x103E) Series Description FSE PD AXIAL OBL (0x0008,0x1050) Performing Physician's Name (0x0008,0x1070) Operators' Name EC (0x0008,0x1090) Manufacturer's Model Name SIGNA (0x0010,0x0010) Patient's Name (0x0010,0x0020) Patient ID 123565 (0x0010,0x0030) Patient's Birth Date NULL (0x0010,0x0040) Patient's Sex F (0x0010,0x1010) Patient's Age 028Y (0x0010,0x1030) Patient's Weight 61,235 (0x0010,0x21B0) Additional Patient History NULL (0x0018,0x0020) Scanning Sequence SE (0x0018,0x0021) Sequence Variant SK (0x0018,0x0022) Scan Options SP (0x0018,0x0023) MR Acquisition Type 2D (0x0018,0x0024) Sequence Name fse (0x0018,0x0050) Slice Thickness 5 (0x0018,0x0080) Repetition Time 2300 (0x0018,0x0081) Echo Time 22 (0x0018,0x0083) Number of Averages 1 (0x0018,0x0084) Imaging Frequency 63,8615 (0x0018,0x0086) Echo Number(s) 1 (0x0018,0x0087) Magnetic Field Strength 1,5 (0x0018,0x0088) Spacing Between Slices 2 (0x0018,0x0089) Number of Phase Encoding Steps 256 (0x0018,0x0091) Echo Train Length 8 (0x0018,0x0095) Pixel Bandwidth 31,25 (0x0018,0x1020) Software Version(s) 3 (0x0018,0x1030) Protocol Name CLINICAL BRAIN (0x0018,0x1088) Heart Rate 0 (0x0018,0x1090) Cardiac Number of Images 0 (0x0018,0x1094) Trigger Window 0 (0x0018,0x1100) Reconstruction Diameter 220 (0x0018,0x1250) Receive Coil Name HEAD (0x0018,0x1310) Acquisition Matrix {0, 256, 256, 0} (0x0018,0x1312) In-plane Phase Encoding Direction ROW (0x0018,0x1314) Flip Angle 90 (0x0018,0x1316) SAR 0,0313309 (0x0018,0x5100) Patient Position HFS (0x0020,0x000D) Study Instance UID 0.0.0.0.2.8811.20010413115754.12432 (0x0020,0x000E) Series Instance UID 0.0.0.0.3.8811.2.20010413115754.12432 (0x0020,0x0010) Study ID 8811 (0x0020,0x0011) Series Number 2 (0x0020,0x0012) Acquisition Number 31748 (0x0020,0x0013) Instance Number 5 (0x0020,0x0020) Patient Orientation {L, PH} (0x0020,0x0030) Image Position {-110,5, -82,1063, -44,9575} (0x0020,0x0032) Image Position (Patient) {-110,5, -82,1063, -44,9575} (0x0020,0x0035) Image Orientation {1, 0, 0, 0, 0,99096, 0,134158} (0x0020,0x0037) Image Orientation (Patient) {1, 0, 0, 0, 0,99096, 0,134158} (0x0020,0x0052) Frame of Reference UID 0.0.0.0.4.8811.2.20010413115754.12432 (0x0020,0x1002) Images in Acquisition 1 (0x0020,0x1040) Position Reference Indicator NA (0x0020,0x1041) Slice Location -30,2 (0x0028,0x0002) Samples per Pixel 1 (0x0028,0x0004) Photometric Interpretation MONOCHROME2 (0x0028,0x0010) Rows 256 (0x0028,0x0011) Columns 256 (0x0028,0x0030) Pixel Spacing {0,859375, 0,859375} (0x0028,0x0100) Bits Allocated 16 (0x0028,0x0101) Bits Stored 16 (0x0028,0x0102) High Bit 15 (0x0028,0x0103) Pixel Representation 1 (0x0028,0x0106) Smallest Image Pixel Value 0 (0x0028,0x0107) Largest Image Pixel Value 932 (0x0028,0x0120) Pixel Padding Value 0 (0x0028,0x1050) Window Center 0 (0x0028,0x1051) Window Width 0 (0x0028,0x1052) Rescale Intercept 0 (0x0028,0x1053) Rescale Slope 1 (0x0028,0x1054) Rescale Type SIGNAL INTENSITY (UNITLESS) (0x7FE0,0x0010) Pixel Data {0, 0, 0, 0, 0, 0, 0, 0, 0 ...} */
System.Object
 Vintasoft.Imaging.Codecs.ImageFiles.ImageFileBase<Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomPage>
   Vintasoft.Imaging.Codecs.ImageFiles.ImageFile<Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomPage,Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomPageCollection>
     Vintasoft.Imaging.Codecs.ImageFiles.Dicom.DicomFile
Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5