Open fedorov opened 8 years ago
let's do prototype in this one? http://pencil.evolus.vn/Features.html
initial iteration, done in Pencil
Source file and screenshot are also available https://github.com/fedorov/Reporting/tree/v2-design/Doc/design
@che85 can you join the QIICR hangout tomorrow to have some brainstorming about this? If you have any suggestions/iterations before that, they are definitely welcomed, but I prefer to have an early prototype and early discussion then waiting for another 2 weeks.
Looks good to me. Anyway it was better, that you created the first draft because you had a more concrete idea of all this than me. I will be joining the QIICR call.
I agree - that's what I thought too!
Notes from the discussion at the QIICR hangout Sept 16, 2016:
Here's a module for handling a bunch of measurements using a json attribute of a mrml node:
https://github.com/DCBIA-OrthoLab/AnglePlanes-Extension/tree/master/AnglePlanes
On Thu, Sep 15, 2016 at 10:34 AM, Andrey Fedorov notifications@github.com wrote:
Notes from the discussion at the QIICR hangout Sept 16, 2016:
- @pieper https://github.com/pieper about MRML node - may make sense to use a ScriptedModule MRML node with the JSON content; can constraint node selector by an attribute.
- Consider using Table node for content of the measurement report?
- Add capability to plot the measurements in the table and configure the layout to include the plot
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/QIICR/Reporting/issues/74#issuecomment-247346214, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHsfVrIQ_b-Mhvgl4X-Tkq9H2oCmJ34ks5qqVeBgaJpZM4J71wD .
Questions from @che85
- What would the measurement report selector display in the first place? A new vtkMRMLScriptedModuleNode?After saving a report
It should give an option to create new (that is defined by a flag on node selector widget). After saving, it will remain the same. After finalizing, everything should probably become locked/read only, and switch to a view mode.
- Where do I get those measurements from? JSON file? If so, where would it be selected?
While creating the new report, they will come from some statistics tool. We have LabelStatistics module, and it will need to be augmented to allow execution from a scripted module (not sure it can be done right now) and to communicate quantity/units etc codes. It may take some thinking how to design the architecture to allow measurement plugins, but in the beginning it may make sense to keep measurement calculator fixed.
- What exactly is TrackingID? Maybe the name of the segment?
Tracking ID is a human-readable identifier of the measurement group. It does not need to be unique. We should have a way to initialize it automatically, but allow user to modify it if needed (as an advanced option).
Now that you asked, I remembered that we worked to add Tracking ID and UID to the segmentation object itself, and the corresponding CP-1496 has become standard. We need to add this to dcmqi, I created an issue https://github.com/QIICR/dcmqi/issues/87.
- Quantity 1 would be what? Where do we get the information from? Measurements report? What would it be in the first place? Or really just those values from label statistics?
For the measurements loaded from DICOM, Quantity 1 will be Code Meaning from the report, as in https://github.com/QIICR/dcmqi/blob/master/doc/sr-tid1500-ct-liver-example.json#L48 (another action item on dcmqi side is converter from SR to JSON metafile https://github.com/QIICR/dcmqi/issues/88). For the newly created reports, as I mentioned above, the measurement calculator will need to supply this for the new report.
- The user interface for viewing, would it be the same with disabled components? I could imagine having two modes (Annotation, Reading or something similar) where the basic components would be the same like segmentations, measurements, but we would have different selectors. What do you think?
I think to make it prettier, we can remove certain components from the layout that are irrelevant, such as editing tools. I am also wondering how customizable is the Segmentations list widget. We should look in more detail when you get there. For the initial iteration, it is ok to keep the UI the same for viewing.
Going forward, let's keep questions like this on github, so we can have a chance to go back and revisit our thinking (and also make it available for review for the other collaborators and prospective users).
@fedorov Which effects should I hide from the segmentation editor?
Right now I reorganized it like that:
@fedorov when using predecessor concept, how would you detect the final(most recent) version of the report? Basically you can only depend on those being stored in the SlicerDICOMDatabase and you would have to iterate through all SRs for the patient of the current SR and climb up the chain of references....
@fedorov Another thing is: How would you want to save the intermediate results?
Any further thoughts on this issue, otherwise let's close it?
@che85
when using predecessor concept, how would you detect the final(most recent) version of the report? Basically you can only depend on those being stored in the SlicerDICOMDatabase and you would have to iterate through all SRs for the patient of the current SR and climb up the chain of references....
Yes, I agree, I don't know of a better way.
How would you want to save the intermediate results?
I have to admit I don't recall what exactly I was thinking at the time I put this in the initial issue. I think maintaining non-DICOM representation in some temporary space is too cumbersome, so let's not do it.
There should be different modes of operation for annotation vs viewing (from existing SR data).
Annotation mode:
Save intermediate results as the user does annotation for fault-tolerance (not DICOM representation in the user-visible database interface)