如何更新DICOM内存(filestream)中的内容?
最近在进行数据导出时,要把系统中的患者四要素同步到dicom文件中
数据是以stream 的形式从server 上获取,把系统的患者四要素更新到拿到的stream中。
public bool EditPatientInfo(Stream fileStream,DM_PatientInfo patientInfo, out Stream editedStream)
{
editedStream = new MemoryStream();
//首先要把stream 转换成 dicomfile 文件
var dicomFile = new DicomFile();
dicomFile.Load(fileStream);
//对比患者四要素,再做更新
dicomFile.DataSet[DicomTags.PatientsName].SetStringValue(patientInfo.patientName);
dicomFile.DataSet[DicomTags.PatientId].SetStringValue(patientInfo.patientId);
dicomFile.DataSet[DicomTags.PatientsBirthDate].SetDateTime(0, patientInfo.patientBirthDate);
dicomFile.DataSet[DicomTags.PatientsSex].SetStringValue(patientInfo.patientSex);
//更新内存信息
using (var memoryStream = new MemoryStream())
{
dicomFile.Save(memoryStream , options);
ms.Seek(0, SeekOrigin.Begin);
ms.WriteTo(editedStream);
}
return true;
}
通过引用类型对stream 进行传递
主要是stream - dicomfile - stream 的过程
注意再调用方法的时候,有使用到文件流,需要对流就行关闭 释放
// 流处理
stream.Close();
stream.Dispose();