Package: orthanc-server-extensions
Orthanc Server ExtensionsA simple Orthanc python plugin based event processing framework to extend Orthanc’s feature set. It focuses on
integration and orchestration, like study routing, event notifications and audit logging.Free software: GNU Affero General Public License v3Documentation:https://orthanc-server-extensions.readthedocs.io.Featureseasily plug event handling scripts for all Orthanc’schange events-chain functions into a pipeline (composition)run asyncio functions (coroutines) for concurrent processing of a change eventrun (integration) tests for your Orthanc python scriptspublish events to Kafka, RabbitMQ and NATSModulesauto_retries: retry failed jobsauto_forward: forward DICOM to external systems based on python match functionsanonymization: anonymize DICOM Series using the Orthanc APIWhy this library was writtenImprove developer happiness: the development roundtrip is just a little bit long to build, run and test a function, even with Docker.
With this library, you can start from the unit tests, move to integration tests, and then deploy the result in the Docker image.Enable testability: the Orthanc API is provided as a module which is not easy to mock in a clean way.
Orthanc server extensions provide a few simple abstractions that keep functions clean and independently testable.Improve performance: async functions will be executed concurrently, which is advantageous if the processing is I/O bound.Httpx was chosen as a base library to access the Orthanc API, rather than orthanc.RestApi*, because it is well known,
developer friendly, and external API access avoids deadlocks in the Python plugin (before this was solved in 3.1).Runningentry_point.pyprovides the first boilerplate to get started. Run it by issuingdocker-composeup--build; you should be greeted with ‘orthanc started event handled!’ message, which is also published toDevelopingWrite your event handling scripts and register them inevent_dispatcher.register_event_handlers(). Examples,
including the use of async functions and function composition (pipeline), can be found intests/test_event_dispatcher.py.CreditsThis project would obviously not exist without Orthanc, its documentation and its community.This package was created withCookiecutterand theaudreyr/cookiecutter-pypackageproject template.History3.5.0 (2023-10-12)Support pyOrthanc as Orthanc API client3.4.0 (2023-06-21)Improved asyncio performance3.3.0 (2023-01-30)Publish Orthanc change events to Kafka, RabbitMQ and NATSRun asyncio functions (coroutines) for concurrent processing of a change eventChain functions into a pipeline (composition)3.2.8 (2021-09-18)get_metadata_of_first_instance_of_series() now propagates http errors if /instances call fails.3.2.7 (2021-09-17)Small resilience fix for httpx (more conservative timeouts)get_metadata_of_first_instance_of_series() will now return None for unknown keys3.2.6 (2021-09-16)Replace requests/responses library by httpx/respxAdd support for anonymization and re-identification using study mergeMany smaller and bigger refactoringsDependency updates3.1.1 (2021-02-11)Add DICOM auto forwarding sample with retries3.1.0 (2021-02-07)Improved logging, aligned log format and levels with Orthanc.0.1.0 (2021-01-09)First release on PyPI.