Skip to content

Performance improvements for the Orthanc/Sonador Plugin

Rob Oakes requested to merge roakes/orthanc-performance into master
  • Implement models for series, study, and patient in SQLAlchemy to allow for rapid search and lookup of DICOM resources. (Models exist alongside tables in the PostgreSQL database used by Orthanc.)
  • Classes for managing event scheduling and triggers from a single location SonadorServerManager.
    • Recurring (timer based) tasks are registered using register_recurring_task and change events are registered using register_serverchange_callback.
    • Events can be triggered outside of Orthanc's callback system by calling trigger_serverchange_callback.
    • Internal views are included which allow for the events to be triggered via API endpoints.
    • Added Lua callbacks to trigger on update and on delete events, which are not available as part of the Python API.
  • Created base web views which can be used for handling complex REST API interactions.
    • Based on Django class based views with clear interface: __init__ -> setup -> handle method get to allow for shared logic and workflow.
    • Implemented multiple web views to handle caching logic as REST endpoints.
      • Drop/re-initialize cache tables.
      • Views to allow for launching background processes re-populate cache tables after clearing them.
      • Views to enable indexing of single models as-needed/on-demand.
  • Module implementing background tasks/indexing methods to execute logic in event driven and REST endpoint code in a uniform fashion.
  • C-FIND methods for DICOM interactions which utilize the cache for finding resources.
Edited by Rob Oakes

Merge request reports