Verify all viewer annotation tools write valid DICOM-SR readable by the Sonador IO client (round-trip validation)
Systematically verify that every annotation/measurement tool exposed in the Sonador Viewer UI produces valid DICOM-SR output that can be read back by the Sonador IO (Python) client, and fix any tools that fail.
Provenance (re-scoped 2026-07-10 as part of the SN MS1 milestone close-out): originates in the December 2023 planning issue oak-tree/medical-imaging/imaging-development-env#58 ("Troubleshoot annotation tools (ROI, ...) and ensure that all components included in the OHIF UI work and write valid DICOM-SR documents that can be read by the Python client"); deferred to January 2024 for scoping with Ryan and never captured as a standalone issue. The same task remains an open checklist item on milestone %OHIF UI Enhancements and improved Sonador integration.
Already delivered (this issue covers the remaining verification, not these):
- Angle measurement in 2D MPR — oak-tree/medical-imaging/imaging-development-env#63 (closed 2025-03-20) and imaging-development-env#85 (closed) (closed 2025-04-11).
- Multi-document DICOM-SR loading/aggregation via the measurements service — #27 (closed) (closed 2025-10-28).
- Measurements side panel with DICOM-SR creation and upload — #87 (closed) (closed 2025-10-08).
- Qualitative labels persisted to DICOM-SR — #28 (closed) (closed 2026-02-10); series labeling within the worklist module — #21 (closed) (closed 2026-02-10).
Remaining scope:
- Inventory the annotation/measurement tools available in the viewer toolbar (ROI variants, length, bidirectional, points, freehand, etc.).
- For each tool: create an annotation, save to DICOM-SR, and verify the document parses correctly in the Sonador IO client (round-trip test).
- File/fix defects for any tool producing invalid or unreadable SR content; consider adding the round-trip checks to sonador-ftests so the guarantee is regression-tested.
Not yet assigned to a milestone — created so the outstanding scope has a trackable home and can be prioritized (or explicitly declined) during the next planning pass.