使用ClearCanvas库定义ECG Dicom的序列项

时间:2015-05-05 13:47:08

标签: c# dicom clearcanvas

我正在使用clearcanvas库来分类化ecg图像。

我需要为我提取的每个频道定义频道信息(频道源序列和频道灵敏度单元序列)。 如何在ClearCanvas中定义每个通道?

示例代码如下;

channelSeq[i] = new DicomSequenceItem();
channelSeq[i][DicomTags.ChannelBaseline].SetUInt32(0, 0);
channelSeq[i][DicomTags.ChannelTimeSkew].SetUInt32(0, 0);
channelSeq[i][DicomTags.ChannelSampleSkew].SetUInt32(0, 0);
channelSeq[i][DicomTags.WaveformBitsAllocated].SetInt32(0, 16); // 16 bit
channelSeq[i][DicomTags.ChannelSensitivityCorrectionFactor].SetUInt32(0, 1);
channelSeq[i][DicomTags.ChannelSensitivity].SetUInt32(0, 1);
channelSourceSeq = new DicomSequenceItem();
channelSourceSeq[DicomTags.CodeValue].SetStringValue(HttpContext.GetGlobalResourceObject("EcgCodes", ecgType).ToString());
channelSourceSeq[DicomTags.ContextIdentifier].SetStringValue("CID 3001");
channelSeq[i][DicomTags.ChannelSourceSequence].Values = channelSourceSeq;
channelSensUnitSeq = new DicomSequenceItem();
channelSensUnitSeq[DicomTags.CodeValue].SetStringValue("uV"); // millivolt
channelSeq[i][DicomTags.ChannelSensitivityUnitsSequence].Values = channelSensUnitSeq;
channelSeq[i][DicomTags.WaveformChannelNumber].SetStringValue((i + 1).ToString());
channelSeq[i][DicomTags.ChannelLabel].SetStringValue("Channel " + (i + 1));
channelSeq[i][DicomTags.ChannelStatus].SetStringValue("OK");

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Channel Definition Sequence(003A,0200)是Waveform Sequence(5400,1000)内的子序列。

您可以根据需要添加频道,例如

channelSeq[i][DicomTags.WaveformChannelNumber].SetStringValue("1");
channelSeq[i][DicomTags.ChannelLabel].SetStringValue("Channel 1");
channelSeq[i][DicomTags.ChannelStatus].SetStringValue("OK");

并添加您的来源和敏感度,就像您在示例中所示。

最后将您的商品添加到Channel Definition Sequence

myWaveFormSequence[DicomTags.ChannelDefinitionSequence].AddSequenceItem(channelSeq[i]);

请参阅更多标签,您可以为其指定通道序列 http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.10.9.html