weasis - developing DICOM-RT viewer plugin

2,346 views
Skip to first unread message

Tomas Skripcak

unread,
Jan 8, 2015, 9:35:12 AM1/8/15
to dcm...@googlegroups.com
Hi,

I would like to ask whether somebody was successful with the development of DICOM-RT support for Weasis. I have seen a couple of older posts here, however it does not seemed like the involved people finished their attempt. We use the Weasis viewer to display imaging data collected within our radiotherapy studies and I would be great if we can support RT modalities. I am planning to start developing the plugin by myself, however before I invest some time into it I would like to know whether the plugin mechanism of Weasis can support necessary features.

DICOM-RT plugin basically needs to detect a DICOM study which consists from one image series (usually CT), series with RTPLAN modality, series with RTSTRUCT modality and series with RTDOSE modality. Than when displaying the CT images it has to be able to use information from the rest of RT modalities (DOSE, PLAN, STRUCT) to enrich the CT with more information (such as overlaying dose and structures over the CT image).

Does anybody know whether the current viewer plugin architecture allows to work with multiple DICOM series at time?

best

Tomas

Nicolas Roduit

unread,
Jan 11, 2015, 2:54:38 PM1/11/15
to dcm...@googlegroups.com
There is no official DICOM-RT development to my knowledge but I can tell you that it should be possible to build a plugin to display information as overlay on the CT images.

First you can build a plugin skeleton from the maven archetype "weasis-plugin-dicom-viewer-archetype", see this page. There are already some examples in the following modules: DICOM-SR, DICOM-AU and DICOM-ECG (not yet published on github).

If you plan to make it open source, I can help you to build it.

Tomas Skripcak

unread,
Jan 12, 2015, 9:17:44 AM1/12/15
to
Yeah, I am planing to make it open source, ideally under the same license as Weasis has. I will start experimenting with the plugin archetype. I will contact you when I hit some problems.

Tomas

Tomas Skripcak

unread,
Jan 30, 2015, 1:15:32 PM1/30/15
to dcm...@googlegroups.com
Hi,

I read through the documentation about plugin development and I was able to prepare a development environment (compile weasis and load a newly created plugin according to archetype). Now I have a stupid question... from the plugin is there an easy way how I can get programmatic access to loaded DICOM studies/series? I would like to browse through them and detect series with RTPLAN modality.

best

Tomas

Nicolas Roduit

unread,
Jan 31, 2015, 4:02:06 AM1/31/15
to dcm...@googlegroups.com
According to a modality type you can register a viewer through OSGI services (see how it works for DICOM SR with DicomSpecialElementFactory and SeriesViewerFactory, idem for DICOM AU).

I don't what is the best strategy for building a RT viewer, it will depends of what you plan to do. You can send me the specifications. 

Tomas Skripcak

unread,
Jan 31, 2015, 5:04:38 AM1/31/15
to dcm...@googlegroups.com
The thing is that RT viewer needs to work with multiple modalities (series) at a time. The scenario is that user loads one DICOM study consisting from one CT or MR or PET series and one RTSTRUCT modality series and one or more RTDOSE modality series and or more RTPLAN modality series. RTSTRUCT, RTDOSE and RTPLAN holds together the information which is necessary to display dose and structure overlay on top of CT or MR or PET image. The question is whether I can register the viewer to get access to all of these modalities?

Alternatively it would be also ok for me if the viewer can be registered to get access to whole DICOM study loaded in weasis (with all the series). Than I can decide in a plugin whether the modality structure of whole DICOM study contains all the necessary data.

Tomas

Tomas Skripcak

unread,
Jan 31, 2015, 10:30:45 AM1/31/15
to dcm...@googlegroups.com
Ok I think I understand better how it works now, by implementing DicomSpecialElementFactory and defining modalities I provide DICOM browser the possibility to show the appropriate series in side thumbnail view, there I can select them and open them at once. Let me experiment with that a little bit. I will get back to you when I need some more info.

best

Tomas

Philippe Cromer

unread,
Feb 2, 2015, 7:46:37 AM2/2/15
to dcm...@googlegroups.com
Hi,

First of all, I apologize for my English.

I would also be interested in a dicomrt viewer in weasis.
I'm starting with the dcm4chee + weasis environment.
For now I'm using dicompyler dicomrt viewer. It works great, but standalone, not connectable to a server via a web browser (if I am not mistaken).

I still do not know well the dcm4chee environment but if afterwards I can help, I can try, for testing, dev, ...

Best Regards,
Philippe

Nicolas Roduit

unread,
Feb 2, 2015, 4:15:39 PM2/2/15
to dcm...@googlegroups.com
This project is starting, so helping for testing will be useful later.

Tobias Fechter

unread,
Apr 20, 2017, 1:56:59 AM4/20/17
to dcm4che
Hi,

i am planning to use dm4chee + weasis for research in radiotherapy and wanted to know whether there are some news regarding the dicom-rt plug-in for weasis.

best,

tobias

Tomas Skripcak

unread,
Apr 20, 2017, 12:18:53 PM4/20/17
to dcm...@googlegroups.com
Hi,

I was only doing some feasibility testing and did not touch it for longer period (lack of free time). I created a plugin that was able to recognise RTSTRUCT modality and load contours in memory (as this is what I wanted at the first place, possibility to render contours on top of CT - the rendering part is not done). Recently I wanted to continue, but syncing the plugin with newer version of Weasis (2.5) will also take me some time. To conclude, it is far from being ready for anything useful right now. I would stick with dicompyler if you are looking for open source RT viewer.

Tomas

Tobias Fechter

unread,
Apr 21, 2017, 1:32:55 AM4/21/17
to dcm4che
hi,

thx for the reply. the problem is that i would need a "web based" viewer. as far as i know there is no open web dicom viewer that supports the dicom rt standard. is your code available on github? maybe i could contribute something. or do you think its easier to start from scratch because of the compatibility issues?

tobias

Tomas Skripcak

unread,
Apr 21, 2017, 2:26:50 AM4/21/17
to dcm4che
sure the github branch is here 


I already synced it with upstream, but now the build is broken because there have been lots of changes since my initial try. I will try to fix this soon, but if you want to start experimenting, I think it is easier to start from scratch. It would be good if you can stick with plugin name "weasis-dicom-rt" so that it is easier to merge the codebase in a future. You may consider these two commits that contain my initial try as a reference:


I am also working on different web based application (not a viewer) that is loading RT data of multiple patients from PACS over WADO and shows the plan summary for each in a table. I was thinking of reusing the same code for Weasis RT plugin. In case you want to have a look, here is the code:


And these are the relevant methods:

loadRtTreatmentCase
loadDicomRtStructureSet
loadDicomRtDose
loadDicomRtPlan

best

Tomas

Nicolas Roduit

unread,
Apr 22, 2017, 6:05:53 AM4/22/17
to dcm4che
If there is an interest in developing this plugin, I can create an official branch and give permission to contributors. My first contribution will be to integrate the annotations with the new API.

I will also publish soon the new branch of weasis 3.x which contain an new image processing workflow with OpenCV (replaces JAI and gives a performance enhancement, specially on Windows 64-bit system) but does not change munch the APIs.  

Tomas Skripcak

unread,
Apr 22, 2017, 10:49:15 AM4/22/17
to dcm4che
That would be great, definitely easier to keep the branch up to date with current master.

Nicolas Roduit

unread,
May 18, 2017, 1:06:09 PM5/18/17
to dcm4che
I published the dicom-rt branch which allows to show or hide the graphics of the structure set.

Tomas Skripcak

unread,
May 19, 2017, 5:00:44 AM5/19/17
to dcm4che
That is great Nicolas! I just synced my fork, compile->test-> looks very good. I will be creating pull requests for upstream dicom-rt-plugin branch when I add more things.

Tomas Skripcak

unread,
May 19, 2017, 12:15:01 PM5/19/17
to dcm4che
Nicolas I have a question. I was working today on DVH reading from RTDOSE and than I noticed that the RTDOSE objects are not getting into RtSet because DicomModel.getSpecialElements is not considering them as special. I think I understand why... as RTDOSE is image and probably that is the reason why it is not special, however I need them loaded RtSet because they belong to the treatment.

Do you have a good idea how to accomplish this without braking anything in DicomModel.getSecialElements()?

Nicolas Roduit

unread,
May 21, 2017, 12:37:18 PM5/21/17
to dcm4che
RTDose series contain images, so they are DicomImageElement. Anyway I published a modification to handle that.

The concept of RtSet was to group all the RT elements sharing the same Frame Of Reference UID (that means the same coordinate system) related to the selected view. In that way, the treatment can be calculated and the data prepared for building the graphics on the images.

Another thing we have to do is implementing a life cycle of the right panel containing a RtSet (for instance by showing the panel only when clicking on RT series).

Tomas Skripcak

unread,
May 22, 2017, 12:04:56 PM5/22/17
to dcm4che
Yes, but the right panel will have to be redesigned a bit (more item groups). I think it would be useful if one could first select which data set should be loaded (based on RTSTRUCT and RTPLAN selection) e.g.:
- [ ] View All
-- [x] Structure Set 
--- [x] Plan 1
--- [x] Plan 2
-- [ ] Structure Set
--- [ ] Plan 3

Second item group showing structures (tree) from one of above selected Structure Set (combo box).
Third item group showing iso doses (tree) (see my last commit) from Dose associated with one of selected Plan (combo box).

Another question: do you already have some plotting library as dependency in Weasis? We would need one for dose volume histogram visualisation.
.

Nicolas Roduit

unread,
May 22, 2017, 4:20:46 PM5/22/17
to dcm4che
My knowledge is quite limited about what is meaningful to display and about all the relationships. My comment in the code was suggested the use of a combo box to select the structure in case of multiple files. Let me know what you expect in this panel or maybe elsewhere (as it is also possible to use view for displaying a component like the dicom information). I can help for the integration and the graphical part.

Yes, there is very efficient chart library with a very small footprint (https://github.com/timmolter/xchart). The dependency is now in the org.weasis.core.ui module, so you can directly use it. Hope it will fit to your needs.

Tomas Skripcak

unread,
May 23, 2017, 9:51:09 AM5/23/17
to dcm4che
Ok... Can you help me with one more thing regarding Dose images? Because I am thinking about how to register dose images with CT but I don't want to reinvent a wheel and maybe you have some routines in Weasis for this already. Let me explain: right now I have a Dose object that holds the list of dose images (MediaElement) objects. Nowadays it is common that dose images are stored in multi-frame dose pixel array in one SopInstance with RTDOSE modality. That is why I organised Dose class as such. Weasis right now detect the dose images are multi frame and it automatically slice them frame by frame so that one MediaElement is actually one Dose frame.

The spacing of dose frames differs from spacing of e.g. CT slices (CT slices will have different thickness). But one would like to access the dose information from dose image depending on the current position in CT. But we have a different spacing... what we do is that if dose frames spacing is small enough we pick the dose slice which is in a closest distance from current CT slice. However if dose frame spacing is too big (the voxels are too big) it will not be very precise, and in such case one would like to create interpolated dose frame based on fractional distance of current CT position from upper an lower existing dose frames (boundary dose planes for current CT slice).

So far so good... I have detected upper and lower dose frame plane and fractional distance of certain CT slice from them. I have both boundary planes as MediaElement objects. Now the question for you... how can I access the voxel values from MediaElement and create a new MediaElement plane (using simple linear interpolation of existing voxel values and fractional distance)?

t...@oncoramedical.com

unread,
Sep 26, 2018, 2:28:32 PM9/26/18
to dcm4che
Hi all,

I came across this thread regarding an RT plugin for Weasis. Is this still being worked on? I tried to build the dicom-rt-plugin branch but unfortunately ran into some errors from maven.

Best,
Tom

Tomas Skripcak

unread,
Sep 27, 2018, 1:11:31 PM9/27/18
to dcm4che
Hi Tom,

there was no official release of this plugin yet. Currently I am testing a release candidate that I build (and signed) for use within our research institute. At this point I believe that  the plugin covers most of the features of dicompyler project (python based). From development and testing we are building from rt-plugin branch.

best

Tomas

Thomas Pheiffer

unread,
Sep 27, 2018, 1:23:05 PM9/27/18
to dcm...@googlegroups.com
Hi Tomas,

Thanks for the update! This sounds like a very useful addition to weasis. 

-Tom

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm4che+u...@googlegroups.com.
To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

Nicolas Roduit

unread,
Sep 28, 2018, 4:58:46 AM9/28/18
to dcm4che
If you are interested in testing the RT plugin I can build an additional signed version for the next release. We will appreciate any feedback. This will help to add this plugin to the default build of weasis.  


Le jeudi 27 septembre 2018 19:23:05 UTC+2, Thomas Pheiffer a écrit :
Hi Tomas,

Thanks for the update! This sounds like a very useful addition to weasis. 

-Tom

To unsubscribe from this group and all its topics, send an email to dcm4che+unsubscribe@googlegroups.com.

Thomas Pheiffer

unread,
Sep 28, 2018, 6:05:13 AM9/28/18
to dcm...@googlegroups.com
Hi Nicolas,

I would definitely be willing to test the development version and give feedback. 

For context, I am currently experimenting with connecting Weasis to an Orthanc dicom repo, via weasis-pacs-connector. I think I have that mostly figured out. It will be fantastic if the RT plugin can be easily dropped into this setup.


To unsubscribe from this group and all its topics, send an email to dcm4che+u...@googlegroups.com.

To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm4che+u...@googlegroups.com.

Nicolas Roduit

unread,
Oct 1, 2018, 4:35:55 PM10/1/18
to dcm4che
Ok, I will build a package with the next release.


Le vendredi 28 septembre 2018 12:05:13 UTC+2, Thomas Pheiffer a écrit :
Hi Nicolas,

I would definitely be willing to test the development version and give feedback. 

For context, I am currently experimenting with connecting Weasis to an Orthanc dicom repo, via weasis-pacs-connector. I think I have that mostly figured out. It will be fantastic if the RT plugin can be easily dropped into this setup.

To unsubscribe from this group and all its topics, send an email to dcm4che+unsubscribe@googlegroups.com.

To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm4che+unsubscribe@googlegroups.com.

Thomas Pheiffer

unread,
Nov 28, 2018, 2:23:13 PM11/28/18
to dcm...@googlegroups.com
Hi Nicolas,

Did you by chance manage to build a release package with the RT plugin, or know when that might happen?

Best,
Tom

To unsubscribe from this group and all its topics, send an email to dcm4che+u...@googlegroups.com.

To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm4che+u...@googlegroups.com.

To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm4che+u...@googlegroups.com.

Nicolas Roduit

unread,
Nov 30, 2018, 4:27:04 AM11/30/18
to dcm4che
You can download here

I made some changes so that the RT plugin will be incorporated in the next release.

The plugin appears on the right panel and it requires to just click on the Load button.

Display DICOM RT.jpg



Le mercredi 28 novembre 2018 20:23:13 UTC+1, Thomas Pheiffer a écrit :
Hi Nicolas,

Did you by chance manage to build a release package with the RT plugin, or know when that might happen?

Best,
Tom
To unsubscribe from this group and all its topics, send an email to dcm4che+unsubscribe@googlegroups.com.

To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm4che+unsubscribe@googlegroups.com.

To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm4che+unsubscribe@googlegroups.com.

Steffen Hasler

unread,
Mar 8, 2019, 6:45:19 AM3/8/19
to dcm4che
Hi Nicolas,

I read your code, so for one question. Where can the pixel data of the RTDose file be converted into a dose? If I read the raw data and multiply it with dose scaling Factor, I get incomprehensible values, because they are too small. Maybe you can give me some food for thought?

Best,
Steffen

Tomas Skripcak

unread,
Mar 8, 2019, 11:36:14 AM3/8/19
to dcm...@googlegroups.com
Hi Steffen,

This feature is not fully implemented yet. I believe this depends on the value in doseUnit (3004,0002) tag of your Dose object. If it is GY then indeed the multiplication with doseGridScaling should give you the dose value in appropriate units. You have to consider that depending on used treatment planning system the dose that you are reading from one object can be total summed contribution of all beams (e.g. PLAN) or specific single beam (BEAM) within a plan or specific single fraction group (FRACTION) within a plan. The later ones will indicate that you have multiple dose objects in RtSet.

As I was mentioning we do not fully cover all this variations. According to DICOM RT specification if doseUnit is RELATIVE then it represent relative addition to implicit reference value. However what exactly is this implicit value is not so clear.

I remember slightly that when I was implementing the RtSet and debugging the getDoseValueForPixel method (which was supposed to do what you are trying to accomplish with respect to CT pixel coordinates), I have seen the same behaviour (very small values) and I could not figure out why this is the case. It may be that I did not properly understand the usage of of DicomImageElement object that should hold the Image data (probably in OpenCV form) of specific DosePlane:

MediaElement dosePlane = dose.getDosePlaneBySlice(z);
Double doseGyValue = ((DicomImageElement)dosePlane).getImage().get(xDoseIndex, yDoseIndex)[0] * dose.getDoseGridScaling();

probably here is an error and when you have x and y dose image plane coordinate reading the pixel value should be done differently. (this is the reason why my code is currently commented, it was simply not functioning as intended).

best

Tomas

Steffen Hasler

unread,
Mar 14, 2019, 8:15:42 AM3/14/19
to dcm...@googlegroups.com
Hi Tomas,

I think the problem is the unsigned representation of the values. Java does not know unsigned integer values. But I still haven't found an idea how to display this without a sign.

Best, Steffen

Am Fr., 8. März 2019 um 17:36 Uhr schrieb Tomas Skripcak <tos...@gmail.com>:
Hi Steffen,

This feature is not fully implemented yet. I believe this depends on the value in doseUnit (3004,0002) tag of your Dose object. If it is GY then indeed the multiplication with doseGridScaling should give you the dose value in appropriate units. You have to consider that depending on used treatment planning system the dose that you are reading from one object can be total summed contribution of all beams (e.g. PLAN) or specific single beam (BEAM) within a plan or specific single fraction group (FRACTION) within a plan. The later ones will indicate that you have multiple dose objects in RtSet.

As I was mentioning we do not fully cover all this variations. According to DICOM RT specification if doseUnit is RELATIVE then it represent relative addition to implicit reference value. However what exactly is this implicit value is not so clear.

I remember slightly that when I was implementing the RtSet and debugging the getDoseValueForPixel method (which was supposed to do what you are trying to accomplish with respect to CT pixel coordinates), I have seen the same behaviour (very small values) and I could not figure out why this is the case. It may be that I did not properly understand the usage of of DicomImageElement object that should hold the Image data (probably in OpenCV form) of specific DosePlane:

MediaElement dosePlane = dose.getDosePlaneBySlice(z);
Double doseGyValue = ((DicomImageElement)dosePlane).getImage().get(xDoseIndex, yDoseIndex)[0] * dose.getDoseGridScaling();

probably here is an error and when you have x and y dose image plane coordinate reading the pixel value should be done differently. (this is the reason why my code is currently committed, it was simply not functioning as intended).

best

Tomas

On Friday, 8 March 2019 12:45:19 UTC+1, Steffen Hasler wrote:
Hi Nicolas,

I read your code, so for one question. Where can the pixel data of the RTDose file be converted into a dose? If I read the raw data and multiply it with dose scaling Factor, I get incomprehensible values, because they are too small. Maybe you can give me some food for thought?

Best,
Steffen

--
You received this message because you are subscribed to the Google Groups "dcm4che" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+u...@googlegroups.com.

Nicolas Roduit

unread,
Mar 15, 2019, 2:37:33 AM3/15/19
to dcm4che
It is possible to use the integer value as unsigned integer from Java 8 (Weasis code requires at least Java 8), see https://stackoverflow.com/questions/9854166/declaring-an-unsigned-int-in-java


Le jeudi 14 mars 2019 13:15:42 UTC+1, Steffen Hasler a écrit :
Hi Tomas,

I think the problem is the unsigned representation of the values. Java does not know unsigned integer values. But I still haven't found an idea how to display this without a sign.

Best, Steffen

Am Fr., 8. März 2019 um 17:36 Uhr schrieb Tomas Skripcak :
Hi Steffen,

This feature is not fully implemented yet. I believe this depends on the value in doseUnit (3004,0002) tag of your Dose object. If it is GY then indeed the multiplication with doseGridScaling should give you the dose value in appropriate units. You have to consider that depending on used treatment planning system the dose that you are reading from one object can be total summed contribution of all beams (e.g. PLAN) or specific single beam (BEAM) within a plan or specific single fraction group (FRACTION) within a plan. The later ones will indicate that you have multiple dose objects in RtSet.

As I was mentioning we do not fully cover all this variations. According to DICOM RT specification if doseUnit is RELATIVE then it represent relative addition to implicit reference value. However what exactly is this implicit value is not so clear.

I remember slightly that when I was implementing the RtSet and debugging the getDoseValueForPixel method (which was supposed to do what you are trying to accomplish with respect to CT pixel coordinates), I have seen the same behaviour (very small values) and I could not figure out why this is the case. It may be that I did not properly understand the usage of of DicomImageElement object that should hold the Image data (probably in OpenCV form) of specific DosePlane:

MediaElement dosePlane = dose.getDosePlaneBySlice(z);
Double doseGyValue = ((DicomImageElement)dosePlane).getImage().get(xDoseIndex, yDoseIndex)[0] * dose.getDoseGridScaling();

probably here is an error and when you have x and y dose image plane coordinate reading the pixel value should be done differently. (this is the reason why my code is currently committed, it was simply not functioning as intended).

best

Tomas

On Friday, 8 March 2019 12:45:19 UTC+1, Steffen Hasler wrote:
Hi Nicolas,

I read your code, so for one question. Where can the pixel data of the RTDose file be converted into a dose? If I read the raw data and multiply it with dose scaling Factor, I get incomprehensible values, because they are too small. Maybe you can give me some food for thought?

Best,
Steffen

--
You received this message because you are subscribed to the Google Groups "dcm4che" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+unsubscribe@googlegroups.com.

박촬리

unread,
Oct 14, 2019, 11:42:36 PM10/14/19
to dcm4che
Hi Nicolas,

I have downloaded weisis source code 
but i can't find using code about weasis - developing DICOM-RT viewer plugin




@org.osgi.service.component.annotations.Component(service = InsertableFactory.classimmediate = falseproperty = {
    "org.weasis.dicom.viewer2d.View2dContainer=true" })
public class RtDisplayToolFactory implements InsertableFactory {
    private static final Logger LOGGER = LoggerFactory.getLogger(RtDisplayToolFactory.class);

    private RtDisplayTool toolPane = null;

    @Override
    public Insertable createInstance(Hashtable<StringObjectproperties) {
        if (toolPane == null) {
            toolPane = new RtDisplayTool();
            EventManager.getInstance().addSeriesViewerListener(toolPane);
        }
        return toolPane;
    }

    @Override
    public void dispose(Insertable tool) {
        if (toolPane != null) {
            EventManager.getInstance().removeSeriesViewerListener(toolPane);
            toolPane = null;
        }
    }

    @Override
    public boolean isComponentCreatedByThisFactory(Insertable component) {
        return component instanceof RtDisplayTool;
    }

    @Override
    public Type getType() {
        return Type.TOOL;
    }

    // ================================================================================
    // OSGI service implementation
    // ================================================================================

    @Activate
    protected void activate(ComponentContext context) {
        LOGGER.info("Activate the RT panel"); //$NON-NLS-1$
    }

    @Deactivate
    protected void deactivate(ComponentContext context) {
        LOGGER.info("Deactivate the RT panel"); //$NON-NLS-1$
    }

}


so,

Can you share the weisis full source code including using example with DICOM-RT viewer plugin


Thank you

Best, Charlie

2019년 3월 15일 금요일 오후 3시 37분 33초 UTC+9, Nicolas Roduit 님의 말:
To unsubscribe from this group and stop receiving emails from it, send an email to dcm...@googlegroups.com.

박촬리

unread,
Oct 14, 2019, 11:45:10 PM10/14/19
to dcm4che


2018년 11월 30일 금요일 오후 6시 27분 4초 UTC+9, Nicolas Roduit 님의 말:
You can download here
==> i can't download 
 
I made some changes so that the RT plugin will be incorporated in the next release.
The plugin appears on the right panel and it requires to just click on the Load button.
   ==> how can i use RT plugin? i can't find the button or MENU in Weasis program
 

Display DICOM RT.jpg

To unsubscribe from this group and all its topics, send an email to dcm...@googlegroups.com.

To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm...@googlegroups.com.

To post to this group, send email to dcm...@googlegroups.com.
Visit this group at https://groups.google.com/group/dcm4che.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "dcm4che" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dcm4che/crpUaemc2LA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dcm...@googlegroups.com.

Nicolas Roduit

unread,
Oct 15, 2019, 2:54:16 AM10/15/19
to dcm4che
Since version 3.0.4, DICOM RT module is embedded in the distribution as an experimental feature but it is not activated by default. It required to uncomment two lines of the configuration.

That means you can download the latest version and just activate it by uncommenting the two lines in config.properties (or adding them in config-ext.properties), see preferences.

박촬리

unread,
Oct 15, 2019, 5:42:44 AM10/15/19
to dcm4che
Since version 3.0.4, DICOM RT module is embedded in the distribution as an experimental feature but it is not activated by default. It required to uncomment two lines of the configuration.
==> i solved!!  Thank you for your hardworking :)
 
i am sorry but, i have another question like below

1. when  importing(exporting) DICOM,   is RT Structureset(Contour) saved also?
 - i want to save and load DICOM RT to(from) RT tool panel.

2019년 10월 15일 화요일 오후 3시 54분 16초 UTC+9, Nicolas Roduit 님의 말:

박촬리

unread,
Oct 15, 2019, 5:43:47 AM10/15/19
to dcm...@googlegroups.com, nicolas...@gmail.com



Since version 3.0.4, DICOM RT module is embedded in the distribution as an experimental feature but it is not activated by default. It required to uncomment two lines of the configuration.
==> i solved!!  Thank you for your hardworking :)
 
i am sorry but, i have another question like below

1. when  importing(exporting) DICOM,   is RT Structureset(Contour) saved also?

 - i want to save and load RT Structure to(from) RT tool panel
 - i want to save and load Study information to(from) DICOM Explorer tool panel 
   ex) New Study, Save Study, Rename Study, Delete Study, Open Study



image.png



2019년 10월 15일 (화) 오후 3:54, Nicolas Roduit <nicolas...@gmail.com>님이 작성:
You received this message because you are subscribed to the Google Groups "dcm4che" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dcm4che/e3806e44-f86e-4f3e-b20b-84b3e8fbf1d2%40googlegroups.com.

박촬리

unread,
Oct 17, 2019, 2:29:43 AM10/17/19
to nicolas...@gmail.com, dcm...@googlegroups.com
Dear,

I have now activated your RT Tool in Weasis but I have several questions :)

I want to load Contour(RT Structure,like below picture), editing these ex.add,delete), and save to DICOM (like DICOM Export Menu)
 - Similarly,same situation is Study Menu(Add,Rename,Delete,Save,SaveAs)

So, Firstly, When I draw contour On Draw&Mesure Tool Bar, this contour can be linked to the RT Tool's Struture Value


Thank you.




image.png

image.png

2019년 10월 15일 (화) 오후 6:43, 박촬리 <lau...@gmail.com>님이 작성:



Since version 3.0.4, DICOM RT module is embedded in the distribution as an experimental feature but it is not activated by default. It required to uncomment two lines of the configuration.
==> i solved!!  Thank you for your hardworking :)
 
i am sorry but, i have another question like below

1. when  importing(exporting) DICOM,   is RT Structureset(Contour) saved also?

(i also posted google weasis groups)
 




image.png

image.png

To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+u...@googlegroups.com.

Tomas Skripcak

unread,
Oct 17, 2019, 5:28:08 AM10/17/19
to dcm4che
Hi,

currently we implemented only the viewing part (RT-viewer for existing contours, existing plan and dose). Adding new contours to RTSTRUCT series is not supported. I think it could be done but it definitelly requires more development to be done on the plugin.

best

Tomas


On Thursday, 17 October 2019 08:29:43 UTC+2, 박촬리 wrote:
Dear,

I have now activated your RT Tool in Weasis but I have several questions :)

I want to load Contour(RT Structure,like below picture), editing these ex.add,delete), and save to DICOM (like DICOM Export Menu)
 - Similarly,same situation is Study Menu(Add,Rename,Delete,Save,SaveAs)

So, Firstly, When I draw contour On Draw&Mesure Tool Bar, this contour can be linked to the RT Tool's Struture Value


Thank you.




image.png

image.png

2019년 10월 15일 (화) 오후 6:43, 박촬리 <lau...@gmail.com>님이 작성:



Since version 3.0.4, DICOM RT module is embedded in the distribution as an experimental feature but it is not activated by default. It required to uncomment two lines of the configuration.
==> i solved!!  Thank you for your hardworking :)
 
i am sorry but, i have another question like below

1. when  importing(exporting) DICOM,   is RT Structureset(Contour) saved also?

(i also posted google weasis groups)
 




image.png

image.png

2019년 10월 15일 (화) 오후 3:54, Nicolas Roduit <nicola...@gmail.com>님이 작성:
To unsubscribe from this group and stop receiving emails from it, send an email to dcm...@googlegroups.com.

박촬리

unread,
Oct 18, 2019, 8:21:21 AM10/18/19
to dcm...@googlegroups.com
Thank you for your hard work
I will do by myself : )
2019년 10월 17일 (목) 오후 6:28, Tomas Skripcak <tos...@gmail.com>님이 작성:
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dcm4che/94015c20-5c0f-4378-a20f-163fb1033c03%40googlegroups.com.

박촬리

unread,
Oct 19, 2019, 10:49:36 AM10/19/19
to dcm...@googlegroups.com, tos...@gmail.com


currently we implemented only the viewing part (RT-viewer for existing contours, existing plan and dose). Adding new contours to RTSTRUCT series is not supported. I think it could be done but it definitelly requires more development to be done on the plugin.
==> yes, i confirmed when importing DICOM and load RT, RT Structures is displayed on the Viewer,
       but when I export DICOM, RT is not saved. 

       i think this is caused by only exporting Image(series) Data, excluding RT Structures. 

image.png



Hi,

currently we implemented only the viewing part (RT-viewer for existing contours, existing plan and dose). Adding new contours to RTSTRUCT series is not supported. I think it could be done but it definitelly requires more development to be done on the plugin.

best

Tomas

On Thursday, 17 October 2019 08:29:43 UTC+2, 박촬리 wrote:
Dear,

I have now activated your RT Tool in Weasis but I have several questions :)

I want to load Contour(RT Structure,like below picture), editing these ex.add,delete), and save to DICOM (like DICOM Export Menu)
 - Similarly,same situation is Study Menu(Add,Rename,Delete,Save,SaveAs)

So, Firstly, When I draw contour On Draw&Mesure Tool Bar, this contour can be linked to the RT Tool's Struture Value


Thank you.
2019년 10월 17일 (목) 오후 6:28, Tomas Skripcak <tos...@gmail.com>님이 작성:
Hi,
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dcm4che/94015c20-5c0f-4378-a20f-163fb1033c03%40googlegroups.com.

박촬리

unread,
Oct 19, 2019, 8:50:08 PM10/19/19
to dcm4che

Is there any sample code that save the RT Structure and Study information(like Study Name) ? : )

2019년 10월 19일 토요일 오후 11시 49분 36초 UTC+9, 박촬리 님의 말:
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+unsubscribe@googlegroups.com.

Nicolas Roduit

unread,
Oct 20, 2019, 1:35:02 PM10/20/19
to dcm4che
I'm not sure I understand the purpose behind this request.

As a reminder, Weasis is mainly a clinical viewer where editing data is not possible in its current operations. 

However, as a workstation, it is possible to save new DICOM KO and PR files.

박촬리

unread,
Oct 20, 2019, 2:09:05 PM10/20/19
to dcm...@googlegroups.com
Thank you  :)

2019년 10월 21일 (월) 오전 2:35, Nicolas Roduit <nicolas...@gmail.com>님이 작성:
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+u...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "dcm4che" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dcm4che/d5f0ca04-8d71-4909-a132-ee14d3bde8ae%40googlegroups.com.

박촬리

unread,
Oct 21, 2019, 6:58:08 AM10/21/19
to dcm...@googlegroups.com


 i am now testing below code for Editing(Redrawing) RT Structure as Graphics in Measurement Tool bar.
(and convert Graphics to RT Structure for saving to the DICOM file)


i changed option

LayerType.DICOM_RT
==>
LayerType.DRAW

//graphic.setLayerType(LayerType.DICOM_RT);
graphic.setLayerType(LayerType.DRAW);


image.png

image.png

2019년 10월 21일 (월) 오전 3:08, 박촬리 <lau...@gmail.com>님이 작성:

박촬리

unread,
Oct 21, 2019, 12:09:45 PM10/21/19
to dcm...@googlegroups.com

Would u plz consult my question below?
(I am now developing save routine to the DICOM Files for the RT Structures)

i want to edit and save contour data(RT Structure) to the DICOM Files.
- in RT Tool, RT structure can be redrawn(edit) and can be save when DICOM Export.


Regards Best.
 

2019년 10월 21일 (월) 오후 7:57, 박촬리 <lau...@gmail.com>님이 작성:

Nicolas Roduit

unread,
Oct 25, 2019, 11:05:52 AM10/25/19
to dcm4che
I guess it requires some development to allow editing the structure sets of DICOM RT but the original sets should not be editable. Unfortunately I have no time to contribute to this. 


On Monday, October 21, 2019 at 6:09:45 PM UTC+2, 박촬리 wrote:

Would u plz consult my question below?
(I am now developing save routine to the DICOM Files for the RT Structures)

i want to edit and save contour data(RT Structure) to the DICOM Files.
- in RT Tool, RT structure can be redrawn(edit) and can be save when DICOM Export.


Regards Best.
 

2019년 10월 21일 (월) 오후 7:57, 박촬리 <lau...@gmail.com>님이 작성:


 i am now testing below code for Editing(Redrawing) RT Structure as Graphics in Measurement Tool bar.
(and convert Graphics to RT Structure for saving to the DICOM file)


i changed option

LayerType.DICOM_RT
==>
LayerType.DRAW

//graphic.setLayerType(LayerType.DICOM_RT);
graphic.setLayerType(LayerType.DRAW);


image.png

image.png

2019년 10월 21일 (월) 오전 3:08, 박촬리 <lau...@gmail.com>님이 작성:
Thank you  :)

2019년 10월 21일 (월) 오전 2:35, Nicolas Roduit님이 작성:
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+unsubscribe@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "dcm4che" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dcm4che+unsubscribe@googlegroups.com.

TSINXIN

unread,
Nov 2, 2019, 5:39:18 AM11/2/19
to dcm4che
Hi ,

 I'm doing some research about radiotherapy,I am interested in weasis dicom rt . I downloaded and built weasis . I imported  a patient's case including rtImage,rtDose,rt Structure Set,rtPlan , dicom rt plugin can work .Structures can be listed and drawn on CT. But the Plan, Dose,Isodoses can't display and button ‘Display DVH chart’ can't work .  I want to know how to solve this problem.   And I think no problem with the data , because the data display right by  dicompyler ( another python soft) .  Thank you all  






Thank you  :)

--
You received this message because you are subscribed to the Google Groups "dcm4che" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dcm...@googlegroups.com.
case.JPG

TSINXIN

unread,
Nov 3, 2019, 8:46:04 PM11/3/19
to dcm4che
I debug to "void org.weasis.dicom.rt.RtSet.reloadRtCase(boolean forceRecalculateDvh){}",I find UID.RTPlanStorage.equals(sopUID) always false,so initPlan() not called.
Is that the problem ?

On Thursday, January 8, 2015 at 10:35:12 PM UTC+8, Tomas Skripcak wrote:
Hi,

I would like to ask whether somebody was successful with the development of DICOM-RT support for Weasis. I have seen a couple of older posts here, however it does not seemed like the involved people finished their attempt. We use the Weasis viewer to display imaging data collected within our radiotherapy studies and I would be great if we can support RT modalities. I am planning to start developing the plugin by myself, however before I invest some time into it I would like to know whether the plugin mechanism of Weasis can support necessary features.

DICOM-RT plugin basically needs to detect a DICOM study which consists from one image series (usually CT), series with RTPLAN modality, series with RTSTRUCT modality and series with RTDOSE modality. Than when displaying the CT images it has to be able to use information from the rest of RT modalities (DOSE, PLAN, STRUCT) to enrich the CT with more information (such as overlaying dose and structures over the CT image).

Does anybody know whether the current viewer plugin architecture allows to work with multiple DICOM series at time?

best

Tomas

Reply all
Reply to author
Forward
0 new messages