We are handling the orthopedic ward in a hospital.
There are three types of users:
- Doctor (orders examinations, receives results)
- Technician (performs examinations, sends results)
- Administrator (logs all activity, can send info messages to everyone)
The hospital admits patients with injuries to: hip, knee, or elbow.
- Sends an examination request specifying the type of examination (e.g., knee) and the patient’s name to any technician capable of performing that type of examination.
- Receives examination results asynchronously.
- Each technician can perform 2 types of examinations, defined at the start (e.g., knee, hip).
- Receives examination requests of the types they can handle and sends results to the requesting doctor (result includes patient name + exam type + "done").
- Note: If there are two technicians who can perform the same examination (e.g., knee), only one technician should handle the request (but not always the same one).
- Logs all activity (receives copies of all messages – both requests and responses).
- Can send informational messages ("info") to all users.
- Please prepare a diagram with the system architecture (users, exchange, queues, messages).
- The diagram must be prepared electronically (scanned/hand-drawn diagrams are not allowed).
- 1 doctor
- 2 technicians (e.g., knee/hip, knee/elbow)
- 1 administrator
- System: 2 points
- Doctor + Technician: 5 points
- Admin: 3 points
(It is recommended to first implement Doctor and Technician.)
The task can be implemented in any programming language using RabbitMQ for message handling.