Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PACS retrieve jobs #557

Open
jennydaman opened this issue Jun 3, 2024 · 0 comments
Open

PACS retrieve jobs #557

jennydaman opened this issue Jun 3, 2024 · 0 comments

Comments

@jennydaman
Copy link
Contributor

Currently, ChRIS_ui asks PFDCM, which asks the PACS to send images to oxidicom, which sends images to CUBE. This is a bad architecture and is susceptible to performance problems when a large influx of requests causes the system to slow down and drop data.

@chhsiao1981 proposed for CUBE to manage PACS retrieve via a queue of jobs.

  1. ChRIS_ui asks CUBE to retrieve some data from PACS. CUBE will create a PacsRetrieveJob and respond with the JobId.
  2. ChRIS_ui can ask CUBE for the status of a job using the JobId. ChRIS_ui can also search for pending/active jobs by DICOM tags, e.g. it can ask CUBE: "are you currently trying to pull this series for patient A?"
  3. CUBE will run PacsRetrieveJob when they are created. The maximum number of concurrently running PacsRetrieveJob is configurable.
  4. When a PacsRetrieveJob is running, CUBE will ask the PACS for the data requested by the job, then wait for the data to be received (by oxidicom then registered to CUBE).

The proposal has the following advantages:

  • A work queue protects the entire system from being overloaded by a large influx of requests.
  • Having CUBE keep track of jobs makes it easier for CUBE to manage job state, and retry jobs when they fail.
  • When multiple users are active at the same time, they can query CUBE for pending/active jobs, instead of them both doing a PACS pull of the same data.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant