ips-nodo-dominio/README.md
2026-04-27 04:25:52 +00:00

107 lines
3.1 KiB
Markdown

# 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:
```bash
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):
```env
NGINX_CONF=http
```
**HTTPS** (requiere certificados):
```env
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](nginx/http.conf) y [nginx/https.conf](nginx/https.conf).
### 3. Configuración HAPI FHIR
Los parámetros del servidor FHIR se ajustan en [hapi-config/application.yaml](hapi-config/application.yaml). El servidor usa **Lucene** como backend de búsqueda (índice local, no requiere servicio externo).
## Levantar los servicios
```bash
docker compose up -d
```
HAPI FHIR tarda aproximadamente **30-40 segundos** en arrancar completamente.
## Verificar el despliegue
```bash
# 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
```bash
# Solo detener
docker compose down
# Detener y eliminar volúmenes (borra datos de la BD)
docker compose down -v
```