改DICOM这种平面结构数据为对象结构

DICOM格式中所有信息条目类似于平铺地保存于一张表格中,与协议中按对象组织的信息条目组合不对应。

例如fo-dicom中的示例也都是这样编辑条目

var file = await DicomFile.OpenAsync(@"test.dcm"); // Alt 2

var patientid = file.Dataset.Get(DicomTag.PatientID);

file.Dataset.Add(DicomTag.PatientsName, "DOE^JOHN");

能不能把Patient Identification Module弄成对象,即将上面的示例改成下列形式呢?

var file = await DicomFile.OpenAsync(@"test.dcm"); // Alt 2
var dicomfileobj = file.Dataset;
var patientid = dicomfileobj.Patient.ID;
dicomfileobj.Patient.Name = "DOE^JOHN";

答案当然是能。

按照DICOM规范把所有Macro/Module定义成对象,DICOM Atributes就定义成C#对象的Properties,getter和setter内封装fo-dicom的Add等方法。用反射自动解码和编码DICOM即可。

具体实现此处不表了。