DICOM 私有tag赋值小结
在给RTDose 文件填一个字符串时,该tag如下图所示:
由于业务需要,需要把5个数据库的字段读出来进行拼接,当然字符串拼接在C# 中我们直接使用
string.Format()就行了,我们以doseComment为例
// string.Format
var doseComment= string.Format("{0}\\{1}\\{2}\\{3}\\{4}", 3D, 0, 281.340942382813, 0, 0);
然后我们直接把这个字符串写进dicom 文件
// SetStringValue
DataSet[DicomTags.DoseComment].SetStringValue(doseComment);
当我们用工具打开该文件时,发现doseComment这个tag 换行了,如下图所示:
当然我们也可以使用以下的写法:
// AppendString
DataSet[DicomTags.DoseComment].AppendString(3D);
DataSet[DicomTags.DoseComment].AppendString(string.Format(0));
DataSet[DicomTags.DoseComment].AppendString(string.Format(281.340942382813));
DataSet[DicomTags.DoseComment].AppendString(string.Format(0));
DataSet[DicomTags.DoseComment].AppendString(string.Format(0));
当我们用工具打开该文件时,发现doseComment这个tag 换了两行,如下图所示:
当我们直接使用如下的
// TryGetString
string doseComment;
if(DataSet[DicomTags.DoseComment].TryGetString(0, out doseComment))
{
}
我们发现,此时只拿到了一个3D,而不是整个字符串, 这个时候,我们就需要根据这个tag的count,进行遍历,拿到拼接字符串里的每个内容
// TryGetString
var doseStrCount = DataSet[DicomTags.DoseComment].Count;
var stringList = new List<string>();
for (var i = 0; i < doseStrCount ; i++)
{
string doseStr;
if (!DataSet[DicomTags.DoseComment].TryGetString(i, out doseStr))
{
LogAdapter.Logger.Error("error");
}
stringList.Add(doseStr);
}
//这时的stringList里就把所有的拼接字符串的内容就拿到了
以上就是自有tag的赋值与读取的简单介绍。