Architecture
- oxidicom receives DICOM data from PACS. This event is called an association.
- For every DICOM file received, oxidicom stores the file in CUBE's storgae.
- 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.
- When the association is complete, oxidicom sends a task to RabbitMQ.
- 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 │◄────────┤ │ └──────────┘
└────────┘ └─────────────┘