-
Notifications
You must be signed in to change notification settings - Fork 22
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
Design/requirements for the initial version of the new Reporting module #74
Comments
let's do prototype in this one? http://pencil.evolus.vn/Features.html |
created using http://pencil.evolus.vn/Next.html v.3 see #74
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 https://github.com/DCBIA-OrthoLab/AnglePlanes-Extension/tree/master/AnglePlanes On Thu, Sep 15, 2016 at 10:34 AM, Andrey Fedorov notifications@github.com
|
- Segment Editor and measurement table still needs to be added
- when image volume is selected, a new segmentation is created and image volume is set as master for the segmentation - when another image volume is selected and then going back to the previous one, Reporting module knows referenced segmentation so no new one is created
Questions from @che85
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.
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.
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 QIICR/dcmqi#87.
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 QIICR/dcmqi#88). For the newly created reports, as I mentioned above, the measurement calculator will need to supply this for the new report.
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). |
…IICR#74) - later moving that into the background (logic) only for statistics calculation and using vtkMRLMTableNode instead
…a better style (issue QIICR#74)
…ata of segments (issue QIICR#74) - needed for recalculating statistics
@fedorov Which effects should I hide from the segmentation editor? |
…gments change (issue QIICR#74)
… from SegmentEditorWidget(issue QIICR#74) - better structure - TODO: implement method for centering segmentation when selection changes in table view
…ixel data is already available(issue QIICR#74)
…in Reporting widget (issue QIICR#74) - added button for loading data rather than doing it manually for development purposes
…entation meta information (issue QIICR#74) - based on layout showing measurements table in slice view or module UI
QIICR#74) - setting image volume to None as well - removed WindowLevelEffectButton
- TODO: Populate hardcoded attributes with real ones - TODO: Refactoring
…n order to switch between tables (issue QIICR#74) - upon vtkMRMLTableNode selection is checked if there is a segmentation referenced, if not, create a new one and add the reference - once a image volume has been selected, it is bound to the segmentation and cannot be changed anymore (image selector disabled)
…and images (issue QIICR#74)
@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? |
Yes, I agree, I don't know of a better way.
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)The text was updated successfully, but these errors were encountered: