Installation

This document will have instructions on how to install the project.

External containers

This project requires multiple external docker containers:

  • 1 OpenMRS installation per organization
  • 2 RabbitMQ containers (1 exposed to the public, 1 internal)
  • 1 MariaDB container

RabbitMQ

The system uses 2 separate RabbitMQ containers for different purposes:

RabbitMQ Inbound (exposed to public): Used by the inbound message processors to receive appointment messages from external systems.

  • Ports: 5672 (AMQP), 5671 (AMQP over TLS), 15672 (Management UI)
  • Container name: communicatie-rabbitmq-inbound

RabbitMQ Internal (not exposed): Used internally by the scheduler and notification worker for inter-service communication.

  • Only accessible within the Docker network
  • Container name: communicatie-rabbitmq-internal

Both RabbitMQ containers are automatically set up and managed by the main docker-compose.yml file.

Fake Sender plugins

  • sudo docker run -p 13371:8080 ghcr.io/avansict/in2.4-fakecomworld:main

Hosts this documentation on localhost:13371. But it would be more adviced to use the docker-compose found at /fakecomworld/docker-compose.yml

Our custom containers

OpenMRS Plugin

Container 1: Inbound Processor (mfs-1)

Listens to appointment messages from the external RabbitMQ (rabbitmq-inbound) and stores them in MariaDB.

Container 2: Scheduler (mfs-2)

Reads messages from MariaDB and publishes them to the internal RabbitMQ (rabbitmq-internal) for scheduled delivery.

Container 3: Notification Worker (mfs-3)

Listens to notification messages from the internal RabbitMQ (rabbitmq-internal) and stores notifications in MariaDB. This container handles sending messages to external services (SwiftSend, SecurePost, LegacyLink, AsyncFlow).

Container 4: Secondary Inbound Processor (mfs-4)

Additional inbound processor for load balancing, listens to the external RabbitMQ (rabbitmq-inbound).

Docker compose

Most of this project can be installed with a single docker compose command:

docker compose up -d

This will start all required services:

  • MariaDB database
  • RabbitMQ Inbound (exposed)
  • RabbitMQ Internal (internal only)
  • FakeComWorld (mock SMS/Email service)
  • 4 Message Forwarding Service containers

Make sure to configure your .env file with the required environment variables before running the compose command.