Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Writing DoseMatrix.DoseValues #38

Closed
Fivetee opened this issue May 2, 2016 · 1 comment
Closed

Writing DoseMatrix.DoseValues #38

Fivetee opened this issue May 2, 2016 · 1 comment

Comments

@Fivetee
Copy link

Fivetee commented May 2, 2016

I want to modify some dose values. I can read a DoseMatrix and change some dosevalues, but when when I write the dosefile and open it again, I see that nothing has changed.

@rexcardan
Copy link
Owner

rexcardan commented May 2, 2016

Check out my ConvertRelToAbs method (in the link below) and you can see the gist of how to do it. You have to modify the underlying DICOM object by writing the bytes back to the matrix. The DoseValue list doesn't do that by itself. We could add it though.The issue is you have to make sure the Units and Scaling are correct. Let me know if you think of a clean way to do it.

https://github.com/rexcardan/Evil-DICOM/blob/master/EvilDICOM/EvilDICOM/RT/DoseMatrix.cs

`
DoseValues = DoseValues.Select(d => d * totalDose).ToList();
var _16b = 1 / Math.Pow(2, 16);
_doseObject.DoseGridScaling.Data = _16b;
_doseObject.DoseUnits.Data = "GY";
_doseObject.DoseType.Data = "PHYSICAL";

        using (var stream = new MemoryStream())
        {
            var binWriter = new BinaryWriter(stream);
            foreach (var d in DoseValues)
            {
                int integ = (int)(d / _16b);
                var bytes = BitConverter.GetBytes(integ);
                binWriter.Write(integ);
            }
            var ows = new OtherWordString(TagHelper.PIXEL_DATA, stream.ToArray());
            _doseObject.ToDICOMObject().Replace(ows);
        }

`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants