跳转至

dcmtk生成RDSR中由于添加数据先后导致数据丢失错误的修复

在使用dcmtk生成辐射剂量结构化报告(RDSR)过程中,需要先添加报告主体内容,然后再设置设备信息和常规的DCM数据信息;如果顺序相反,可能会清理了之前设置的数据。

1. 缘起

在尝试生成辐射剂量的结构化报告(RDSR)时,执行完相应的代码,小伙伴提醒我导出的数据中缺少了PID信息。

2. 分析和测试

首先分析之前文件的生成流程,如下所示: 原始导出逻辑

对于设备信息和常规DCM信息的处理与对普通图像的处理是完全相同的。
但是在生成计量报告时候为了方便使用了DCMTK的DSRDocument类,调用的代码大致如下:

// DcmItem *dcmItem -- 是已经保存了各种信息的dcm数据对象的指针
DSRDocument* rdsrDocument = new DSRDocument(DSRTypes::DT_XRayRadiationDoseSR);
// 添加结构化报告内容
rdsrDocument->write(*(dcmItem));
delete  rdsrDocument;
rdsrDocument = nullptr;
考虑到可能是在使用这个DSRDocument类的时候将这部分数据弄没得,将经过上述代码的数据分别输出到文件方便对比。 分析后,果然是这个原因,那么修改数据的写入顺序尝试。

3. 修改

修改为先写报告的核心内容,然后再添加其他内容。
测试得到结果,果然能够得到正确的数据。
流程如下所示:
修改后的结构化报告文件信息添加顺序