Skip to main content

Architecture

  1. oxidicom receives DICOM data from PACS. This event is called an association.
  2. For every DICOM file received, oxidicom stores the file in CUBE's storgae.
  3. oxidicom sends messages about DICOM study reception progress to NATS. ChRIS_ui gets the messages over websockets, which is tunneled through CUBE's ASGI web server.
  4. When the association is complete, oxidicom sends a task to RabbitMQ.
  5. The task is delivered to CUBE's celery worker, which registers received DICOM data to the database.

Architecture Diagram

                                                                    ┌────────────┐                              
│ ChRIS_ui │
└────────────┘

│websocket
│message

┌────┴────────┐
progress message ┌────────┐ message │ CUBE │
┌─────────────────────►│ NATS ├────────►│ ASGI server │
│ └────────┘ └─────────────┘
┌────────┐ DICOM ┌───┴────┐ send task ┌────────┐ consume ┌─────────────┐
│ PACS ┼────────►│oxidicom┼────────────────►│RabbitMQ├────────►│ │ ┌──────────┐
└────────┘ └───┬────┘ └────────┘ │ CUBE │ register │PostgreSQL│
│ write ┌────────┐ read │celery worker├─────────►│ Database │
└─────────────────────►│Storage │◄────────┤ │ └──────────┘
└────────┘ └─────────────┘