tomosynthesis

we just got today the hologic selenia machine and im the IT tech guy at the institution we are a small imaging center i have learned that its a new dicom format that many pacs server dont support this bto object breast tomosynthesis object do ur software support this kind of file i attracted a sample file plz do check and reply im interested in purchasing pro software if yes

sample file
https://docs.google.com/folderview?id=0B_iZH8ft6BC9SGpSc09YcTBibTQ&usp=drive_web

Best Regards:
Abed Al-Mawla Itani
Email Abedalmawlaitani@gmail.com
Skype Abedalmawlaitani
Phone number 96170739757

Dear Abed,

I have successfully uploaded your sample DICOM file into Orthanc, using the default Web interface “Orthanc Explorer” (cf. attached screenshot).

Please follow this video sample to learn how to achieve this upload:
https://www.youtube.com/watch?v=4dOcXGMlcFo&list=UUdZsareZU5sElONU1hfvXAg

Regards,
Sébastien-

Import.png

Digging up an old topic, I can confirm that Orthanc works with our Hologic tomosynthesis DICOM as far as sending/receiving images without modification.

We’re currently working through issues having to do with anonymization.

Hologic uses several proprietary DICOM fields to store what I would assume is volumetric data. It is important to keep these fields during anonymization in order to preserve the function of the anonymized DICOM on the Hologic workstation.

So far, we are preserving group tags

0019 : various Hologic settings
7e01 : the embedded volumetric data Hologic uses to generate images at their workstations

To preserve these groups, it is necessary to check what elements are used and feed all 0019-eeee and 7e01-eeee (where eeee is the element used) to the anonymizing API.

To date, I have not seen any private patient information stored in 0019 or 7e01, but users should confirm for themselves that no patient information survives in these groups, if the intent is to make the output DICOM truly anonymous.

Currently, we are grappling with image ordering on the Hologic workstation when reading our anonymized DICOM. If I determine that the change in order is a result of the Orthanc anonymization process, I’ll relay my fix here.

John.

As an update to the issue of display order on the Hologic workstation, it seems that Hologic generates groups of series during its use, taking the input data and creating 3 separate, but related, series of views of the data.

Those series are then linked together for display purposes with embedded ReleatedSeriesSequence DICOM tags which contain DICOM UID of the related series. When you view results on Hologic, you really view 3 series simultaneously.

These RelatedSeriesSequence tags are naturally removed by the default anonymization process. I think most anonymization routines, whether Orthanc, Osirix, Matlab or others, are going to miss the embedded connections stored in the RelatedSeriesSequence tags.

The anonymization of the Hologic studies will require some special handling. That’s because the connections are made using the very same UID that anonymization replaces.

First, the connections between series will have to be determined. A table must be constructed of the pre-anonymization UID and what series and instances point to other series and instances using these pre-anon UID.

Then, the anonymization will have to proceed in a very particular order and at the instance level. Because the UID are the only guaranteed unique identifier of each DICOM file, we have to work at the instance level because it’s the only way to be certain that the anonymized instance we get back is the instance we sent to the anonymizer. If we were to anonymize at the series level, there would be an ambiguity in the order of the instances returned. Are they in the same order as what went in? I don’t think Orthanc guarantees this. Maybe I could figure out the order if the DICOM included the InstanceNumber tag, but that tag was not meant to be a unique identifier like the UID.

Working at the instance level, we first anonymize the instances that are pointed TO by other instances and which themselves point to no other instances. Then, you work outward in the connection tree. The next level of instances are anonymized and we update their RelatedSeriesSequence pointers to point to the new UID we previously anonymized.

It’s my understanding that anonymizing at the instance level with Orthanc will require tracking the PatientID, StudyInstanceUID, SeriesInstanceUID, etc. (essentially anything above the instance level). That’s because Orthanc will generate new UID for the same input instance each time you anonymize it. This has to do with hashed current time stamps that are used to generate the UID.

So, if you want to anonymize two instances from the same series, but have them remain in the same anonymized patient, study, and series, you need to catch the new patient/study/series UID of the first anonymized instance and then anonymize all later instances with these values fixed as input to the anonymization. Only the first instance should be fully anonymized with no fixed input UID.

I may be mistaken about the PatientID, but I think the study/series UID are generated as I described and will require special handling to keep anonymized instances in the same study/series when anonymizing at the instance level.

I’ll be implementing a solution in LUA. If it works, I’ll post here.

The situation does have general implications for studies which embed links between series using UID. I’ve seen this often with MR exams, where later series will point to the initial localizer they are associated with. If you want to maintain the connections in the anonymized study, I would imagine you’d have to implement something like what I’ve described here. Again, this is not limited to Orthanc. I’m not aware of DICOM anonymizers that retain these connections in the anonymized output.

John.

John,

[…] These RelatedSeriesSequence tags are naturally removed by the default anonymization process. I think most anonymization routines, whether Orthanc, Osirix, Matlab or others, are going to miss the embedded connections stored in the RelatedSeriesSequence tags. […] the connections between series will have to be determined. A table must be constructed of the pre-anonymization UID and what series and instances point to other series and instances using these pre-anon UID. […]

Indeed, keeping track of the relationships of the resources before and after the anonymization process requires higher-level logic. The built-in anonymization process of Orthanc is basic, yet useful for most common anonymization tasks that do not need to track such relationships (such as for CT, RX…).

At the University Hospital of Liège, we have implemented a higher-level Python application on the top of the Orthanc REST API to achieve this tracking.

Regards,
Sébastien-

Thanks, Sebastien. I’m probably about 1/4 of the way through developing a solution in Lua to run along with my normal anonymization script. It’s been a good opportunity to become familiar with another scripting language.

John.

Indeed, keeping track of the relationships of the resources before and after the anonymization process requires higher-level logic. The built-in anonymization process of Orthanc is basic, yet useful for most common anonymization tasks that do not need to track such relationships (such as for CT, RX…).

There is probably a reason this is wound not work, but …

Do the new UIDs generated by anonymising need to be entirely random?
If Orthanc were to generate deterministic UIDs from the original UID the relationships between series would survive anonymisation without having to do any bookkeeping.

Something along the lines of:

import hashlib

prefix = “my.uid.root.”
salt = “machine_secret_generated_on_orthanc_installation” # guard against deanonimisation by enumerating source_uids

def derive_uid(source_uid):
sha = hashlib.sha512(salt + source_uid).hexdigest()
sha_base10 = str(long(sha, 16))
prefix = “my.uid.root.”
return (prefix + sha_base10)[0:64] # max length of UID is 64 characters

print(derive_uid(“1.2.276.0.7230010.3.1.2.0.91372.1478514811.922289”))

Depending on the length of the UID root this would give ~120 bits of randomness and therefore be reasonably secure against collisions unless it handles billions of UIDs.

–Levin Alexander

Hello and thanks for replying back I’m sorry to say that we lost the project that we were working on they got a different software I’m really thank full for your support have a great day

Does the viewer support display Tomosynthesis images?

Thanks
Diego

I could look at images like any other DICOM with the Orthanc viewer (and the Osimis plugin).

Once I fixed the links between the anonymized series, my end users reported that the images were properly displayed on the Hologic.

If you are referring to the volumetric data embedded in the proprietary DICOM group, 7e01, then the answer is most likely No.

I think you’d need to modify the Orthanc viewer in order to recognize data in that field, and then if necessary, determine how to interpret Hologic’s storage of data there. Do they store it as a simple volume of ints/floats, or is there spatial/orientation data embedded? I didn’t look into those issues, since the end users in my case were only interested in looking at the anonymized images on the original Hologic station.

John.

look in this post about the progress others have made with Hologic Breast Tomosynthesis objects:
https://groups.google.com/forum/#!topic/comp.protocols.dicom/aMrgjrMtyVc