Performance improvements for the Orthanc/Sonador Plugin
- 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 usingregister_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.
- Recurring (timer based) tasks are registered using
- 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 methodget
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.
- Based on Django class based views with clear interface:
- 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