Skip to content

Commit

Permalink
📝 joss : format file
Browse files Browse the repository at this point in the history
  • Loading branch information
ylemarechal committed Sep 9, 2024
1 parent 8888544 commit a62f49e
Showing 1 changed file with 43 additions and 24 deletions.
67 changes: 43 additions & 24 deletions paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ tags:
authors:
- name: Gabriel Couture
corresponding: true
orcid: 0000-0003-1832-6036
affiliation: 1
orcid: 0000-0003-1832-6036
affiliation: 1
- name: Yannick Lemaréchal
orcid: 0000-0002-2494-2831
affiliation: 2
orcid: 0000-0002-2494-2831
affiliation: 2
- name: Philippe Després
orcid: 0000-0002-4163-7353
affiliation: "1, 2"
orcid: 0000-0002-4163-7353
affiliation: "1, 2"

affiliations:
- name: Centre de recherche de l’Institut universitaire de cardiologie et de pneumologie de Québec-Université Laval, 2725 Ch Ste-Foy, G1V 4G5, Québec, Canada
Expand All @@ -27,47 +27,66 @@ bibliography: paper.bib
---

# Summary
PyOrthanc is an open-source Python library that provides a comprehensive interface for interacting with Orthanc [@jodogne2018orthanc], a
lightweight, versatile, open-source DICOM server for medical imaging in healthcare and research environments.
PyOrthanc is an open-source Python library that provides a comprehensive interface for interacting with Orthanc
[@jodogne2018orthanc], a lightweight, versatile, open-source DICOM server for medical imaging in healthcare and
research environments.

# Statement of need
Digital Imaging and Communications in Medicine (DICOM) [@dicom2020] is the standard for managing and transmitting medical images.
Orthanc has gained popularity for its lightweight nature and versatility. However, programmatically interacting with
Orthanc servers from its REST API can be complex, especially for those unfamiliar with RESTful APIs. PyOrthanc addresses
this challenge by providing a client-side, Pythonic interface to Orthanc servers, abstracting away the complexities of
HTTP requests and DICOM data handling. This is in contrast to the Orthanc Python plugin, which offers a powerful means
to extend Orthanc's functionality directly within the server environment.
Digital Imaging and Communications in Medicine (DICOM) [@dicom2020] is the standard for managing and transmitting
medical images. Orthanc has gained popularity for its lightweight nature and versatility. However, programmatically
interacting with Orthanc servers from its REST API can be complex, especially for those unfamiliar with RESTful APIs.
PyOrthanc addresses this challenge by providing a client-side, Pythonic interface to Orthanc servers, abstracting away
the complexities of HTTP requests and DICOM data handling. This is in contrast to the Orthanc Python plugin, which
offers a powerful means to extend Orthanc's functionality directly within the server environment.

# Features and Functionalitiesy
PyOrthanc offers a wide range of features that facilitate data manipulation with Orthanc servers:
1. Orthanc’s REST API: PyOrthanc implements Python bindings for all Orthanc REST API routes. All the functionalities
2. exposed in Orthanc are therefore easily accessible from a Pythonic interface.

1. Orthanc’s REST API: PyOrthanc implements Python bindings for all Orthanc REST API routes. All the functionalities exposed in Orthanc are therefore easily accessible from a Pythonic interface.

2. Patient, Study, Series, and Instance: The library provides Python classes that ease data management by following DICOM-level concepts.

3. Querying: PyOrthanc provides utility functions to perform complex queries.

4. Anonymization: PyOrthanc exposes Orthanc’s anonymization functionalities, which are useful for research and data sharing.

5. Modalities: Users can easily command Orthanc servers to invoke DIMSE services with other connected modalities (e.g. CT scan, PACS), which allows querying, storing, and retrieving DICOM data.

6. Jobs: PyOrthanc allows to monitoring of long-running tasks on the Orthanc server.

7. Orthanc SDK: PyOrthanc provides a mock of the Orthanc SDK, which brings type hints and autocomplete (intellisense) when working with the Python Plugin.

# Architecture and Design
The core of PyOrthanc is the Orthanc class, which handles the connection to the Orthanc server and serves as the entry point for all operations. This class manages authentication, request formatting, and response parsing, presenting a clean API to the user. It uses Python's httpx [@coles2024httpx] library for HTTP communications. The Orthanc class is used by all the utility functions and classes in PyOrthanc. Note that the class is programmatically generated with simple-openapi-client [@couture2024simple] for each new version of the Orthanc REST API.
The library is structured around key DICOM concepts, with main classes representing DICOM-level entities such as patients, studies, series, and instances. These classes provide intuitive methods for common operations, such as querying level-specific information, launching anonymization jobs, and downloading data. PyOrthanc also provides utility classes and functions, useful to monitor long-running tasks within Orthanc or perform complex queries.
The core of PyOrthanc is the Orthanc class, which handles the connection to the Orthanc server and serves as the entry
point for all operations. This class manages authentication, request formatting, and response parsing, presenting a
clean API to the user. It uses Python's httpx [@coles2024httpx] library for HTTP communications. The Orthanc class is
used by all the utility functions and classes in PyOrthanc. Note that the class is programmatically generated with
simple-openapi-client [@couture2024simple] for each new version of the Orthanc REST API.

The library is structured around key DICOM concepts, with main classes representing DICOM-level entities such as
patients, studies, series, and instances. These classes provide intuitive methods for common operations, such as
querying level-specific information, launching anonymization jobs, and downloading data. PyOrthanc also provides
utility classes and functions, useful to monitor long-running tasks within Orthanc or perform complex queries.

# Use Cases and Applications
PyOrthanc finds applications in various medical imaging scenarios:

1. Research Data Management: Researchers can use PyOrthanc to automate the process of collecting, anonymizing, and organizing DICOM data.

2. Quality Assurance: The library can be used to develop scripts for checking DICOM data and metadata consistency across large datasets.

3. Clinical Workflow Integration: PyOrthanc can be integrated into clinical workflows, automating tasks such as routing studies to appropriate specialists or triggering analysis pipelines.

# Performance and Scalability
PyOrthanc is designed to handle large-scale DICOM operations efficiently. The library implements connection pooling and supports asynchronous operations for improved performance when dealing with multiple concurrent requests.
PyOrthanc is designed to handle large-scale DICOM operations efficiently. The library implements connection pooling
and supports asynchronous operations for improved performance when dealing with multiple concurrent requests.


# Conclusion
PyOrthanc provides a powerful and user-friendly interface to Orthanc DICOM servers, enabling Python developers to easily integrate DICOM functionality into their applications. By abstracting the complexities of the Orthanc REST API, PyOrthanc accelerates the development of medical imaging applications and workflows. As the field of medical imaging informatics continues to evolve, tools like PyOrthanc play an important role in advancing research and improving clinical practice by making the complex task of data management easier.
PyOrthanc provides a powerful and user-friendly interface to Orthanc DICOM servers, enabling Python developers to easily
integrate DICOM functionality into their applications. By abstracting the complexities of the Orthanc REST API,
PyOrthanc accelerates the development of medical imaging applications and workflows. As the field of medical imaging
informatics continues to evolve, tools like PyOrthanc play an important role in advancing research and improving
clinical practice by making the complex task of data management easier.

# References
Jodogne, S. (2018). The Orthanc Ecosystem for Medical Imaging. Journal of Digital Imaging, 31(3), 341-352.
DICOM Standards Committee. (2020). Digital Imaging and Communications in Medicine (DICOM) Standard. Rosslyn, VA: NEMA.
Coles, T. (2024). HTTPX: A next-generation HTTP client for Python. [Software]. Available from https://github.com/encode/httpx
Couture, G. (2024). simple-openapi-client: OpenAPI Python client generator that follows the KISS principle. [Software]. Available from https://github.com/gacou54/openapi-client

0 comments on commit a62f49e

Please sign in to comment.