How aryankv08-png/medigrid- works
MediGrid is a prototype for coordinating ambulances, hospital beds, and inter-hospital transfers. Ambulance, hospital, and control-room clients connect over WebSocket, register, and send location, bed, or transfer messages; the server applies rate limits, finds and reserves a suitable bed, and returns or broadcasts updates. HTTP also exposes health and emergency-request data. MySQL holds operational records, Redis supports limits, locks, and cross-instance fanout, and RabbitMQ plus a worker handle reliable events and transfer workflows. The README describes these capabilities; some server and worker implementation details were not sampled.
Main entry points: index.ts HTTP and WebSocket server · worker.ts Event and transfer worker · rabbitmq.ts Reliable event publishing · db.ts Database access and schema
Components 17
Client interface
- HTTP and WebSocket server
src/index.ts - Message schemas
src/protocol.ts - Emergency request feed
src/index.ts
Coordination
- Bed reservation and dispatch
src/index.ts - Transfer actions
src/index.ts - Location and hospital matching
src/index.ts - Road distance calculation
src/routing.ts
Async events
- Reliable event publishing
src/rabbitmq.ts - RabbitMQ
- Bed, transfer, dispatch queues
src/rabbitmq.ts - Event and transfer worker
src/worker.ts
Infrastructure
- Database access and schema
src/db.ts - MySQL
- Rate limits, locks, fanout
src/redis.ts - Redis
- OSRM routing service
Other components
- Ambulance / hospital / control
Connections 22
- Ambulance / hospital / control → HTTP and WebSocket server: connects / requests
README.md - HTTP and WebSocket server → Message schemas: validates messages
src/index.ts - HTTP and WebSocket server → Bed reservation and dispatch: handles bed requests
src/index.ts - HTTP and WebSocket server → Transfer actions: handles transfer actions
src/index.ts - HTTP and WebSocket server → Location and hospital matching: handles location updates
src/index.ts - HTTP and WebSocket server → Emergency request feed: serves request feed
src/index.ts - HTTP and WebSocket server → Database access and schema: queries records
src/index.ts - HTTP and WebSocket server → Rate limits, locks, fanout: checks limits and locks
src/index.ts - HTTP and WebSocket server → Reliable event publishing: publishes events
src/index.ts - HTTP and WebSocket server → Road distance calculation: calculates route distance
src/index.ts - Bed reservation and dispatch → Database access and schema: reserves beds
src/index.ts - Transfer actions → Reliable event publishing: publishes transfer actions
src/index.ts - Location and hospital matching → Road distance calculation: estimates distance
src/index.ts - Database access and schema → MySQL: reads and writes
src/db.ts - Rate limits, locks, fanout → Redis: stores limits and locks
src/redis.ts - Reliable event publishing → RabbitMQ: publishes messages
src/rabbitmq.ts - Reliable event publishing → Bed, transfer, dispatch queues: routes topic events
src/rabbitmq.ts - Event and transfer worker → RabbitMQ: consumes events
src/worker.ts - Event and transfer worker → Bed, transfer, dispatch queues: consumes bed and transfer events
src/worker.ts - Event and transfer worker → Database access and schema: updates records
src/worker.ts - Event and transfer worker → Rate limits, locks, fanout: locks and broadcasts
src/worker.ts - Road distance calculation → OSRM routing service: requests road routes
src/routing.ts