3.1 KiB
IPS Dominio Backend
Proyecto Docker Compose con los servicios necesarios para el nodo de dominio IPS (International Patient Summary).
Servicios
| Servicio | Imagen / Fuente | Descripción |
|---|---|---|
hapi-fhir |
hapiproject/hapi:latest |
Servidor FHIR R4 (implementación Spring Boot) |
hapi-db |
postgres:14.6 |
Base de datos PostgreSQL para HAPI FHIR |
bus-gateway |
./bus-gateway |
Gateway hacia el Bus de salud (MPI y Document Registry) |
nginx |
nginx:alpine |
Proxy inverso — punto de entrada HTTP/HTTPS |
Routing nginx
| Ruta | Destino |
|---|---|
/bus-gateway/* |
bus-gateway:3000 |
| todo lo demás | hapi-fhir:8080 |
Requisitos
- Docker >= 20.10.8
- Docker Compose >= 1.29.2
Configuración
1. Variables de entorno
Copia el archivo de ejemplo y completa los valores:
cp .env.example .env
| Variable | Descripción |
|---|---|
BUS_URL |
URL base del Bus de salud |
BUS_JWT_SECRET |
Secreto compartido para JWT con el Bus |
BUS_ISSUER |
Issuer del token JWT |
MPI_URL |
URL del servicio MPI (default: BUS_URL) |
DOCUMENT_REGISTRY_URL |
URL del Document Registry (default: BUS_URL) |
MPI_SCOPE |
Scopes OAuth para MPI |
DOCUMENT_REGISTRY_SCOPE |
Scopes OAuth para Document Registry |
BUS_DEBUG |
Habilita logs de requests al Bus (true / false) |
SPRING_DATASOURCE_URL |
JDBC URL de la BD — debe usar puerto 5433 (jdbc:postgresql://hapi-db:5433/root) |
SPRING_DATASOURCE_USERNAME |
Usuario de la base de datos |
SPRING_DATASOURCE_PASSWORD |
Contraseña de la base de datos |
POSTGRES_DB |
Nombre de la base de datos PostgreSQL |
POSTGRES_USER |
Usuario PostgreSQL |
POSTGRES_PASSWORD |
Contraseña PostgreSQL |
2. Configuración de nginx (HTTP o HTTPS)
La variable NGINX_CONF en el .env selecciona el modo:
HTTP (por defecto):
NGINX_CONF=http
HTTPS (requiere certificados):
NGINX_CONF=https
SSL_CERT_PATH=./certs/server.crt
SSL_KEY_PATH=./certs/server.key
Los certificados se inyectan como Docker secrets y nginx los lee desde /run/secrets/ssl_cert y /run/secrets/ssl_key. En modo HTTPS el tráfico HTTP (puerto 80) se redirige automáticamente a HTTPS (443).
Los archivos de configuración están en nginx/http.conf y nginx/https.conf.
3. Configuración HAPI FHIR
Los parámetros del servidor FHIR se ajustan en hapi-config/application.yaml. El servidor usa Lucene como backend de búsqueda (índice local, no requiere servicio externo).
Levantar los servicios
docker compose up -d
HAPI FHIR tarda aproximadamente 30-40 segundos en arrancar completamente.
Verificar el despliegue
# Estado de los contenedores (hapi-db debe aparecer "healthy")
docker compose ps
# CapabilityStatement FHIR a través de nginx
curl http://localhost/fhir/metadata
# Bus Gateway a través de nginx
curl http://localhost/bus-gateway/health
Detener los servicios
# Solo detener
docker compose down
# Detener y eliminar volúmenes (borra datos de la BD)
docker compose down -v