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. 修改
修改为先写报告的核心内容,然后再添加其他内容。
测试得到结果,果然能够得到正确的数据。
流程如下所示: