Skip to content

Suite de APIs de salud: Servidor FHIR R4 y Procesador HL7 v2.x con OAuth 2.0. APIs REST Flask con autenticación JWT, interfaces web, entornos virtuales y health checks. Ideal para desarrollo y testing de aplicaciones médicas.

Notifications You must be signed in to change notification settings

kuroi-dev/FHIR-HL7_APIWEB

Repository files navigation

Healthcare Protocols Testing Suite 🏥

Un conjunto completo de servidores de prueba para protocolos de salud FHIR R4 y HL7 v2.x con autenticación OAuth 2.0 y características de seguridad para el desarrollo y testing de aplicaciones de salud.

🔍 Descripción General

Este workspace contiene dos proyectos principales:

  1. FHIR Testing Server - Servidor API REST FHIR R4 con SMART on FHIR
  2. HL7 Message Processor - Procesador de mensajes HL7 v2.x con validación

✨ Características

Seguridad

  • 🔐 OAuth 2.0 con JWT tokens
  • 🛡️ CORS configurado
  • 🔒 Rate limiting con nginx
  • 🏥 Consideraciones HIPAA para datos de salud
  • 🔑 Headers de seguridad (HSTS, XSS Protection, etc.)

FHIR R4 API

  • 👤 Patient resources (crear, leer, buscar)
  • 📈 Observation resources (signos vitales, laboratorios)
  • 📋 CapabilityStatement con metadatos del servidor
  • 🔍 SMART on FHIR OAuth discovery
  • Validación de recursos FHIR

HL7 v2.x Processor

  • 📨 Procesamiento de mensajes ADT, ORU, y más
  • Validación de estructura de mensajes
  • 📋 Almacenamiento de mensajes procesados
  • 🔍 Búsqueda y filtrado de mensajes
  • 📈 Estadísticas de procesamiento

🚀 Inicio Rápido

Requisitos Previos

  • Python 3.11+
  • Docker y Docker Compose
  • Git

Instalación

# Clonar el repositorio
git clone <repository-url>
cd saludProtocols

# Opción 1: Ejecutar con Docker Compose (recomendado)
docker-compose up -d

# Opción 2: Ejecutar localmente
# FHIR Server
cd fhir-testing-server
cp .env.example .env
pip install -r requirements.txt
python app.py

# HL7 Processor (nueva terminal)
cd ../hl7-message-processor
cp .env.example .env
pip install -r requirements.txt
python app.py

URLs de Acceso

Con Docker Compose:

Ejecución local:

📚 Guías de Uso

1. Autenticación OAuth 2.0

# Obtener token de acceso
curl -X POST http://localhost:8080/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "fhir-test-client",
    "client_secret": "test-secret"
  }'

2. Crear un Paciente FHIR

# Usar el token obtenido anteriormente
curl -X POST http://localhost:8080/fhir/Patient \
  -H "Authorization: Bearer <tu-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "resourceType": "Patient",
    "name": [{
      "use": "official",
      "given": ["Juan"],
      "family": "Pérez"
    }],
    "gender": "male",
    "birthDate": "1990-05-15",
    "active": true
  }'

3. Procesar Mensaje HL7

# Autenticarse en HL7 processor
curl -X POST http://localhost:8081/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "hl7-test-client",
    "client_secret": "test-secret"
  }'

# Procesar mensaje ADT^A01
curl -X POST http://localhost:8081/hl7/process \
  -H "Authorization: Bearer <tu-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "MSH|^~\\&|SENDING_APP|FACILITY|RECEIVING_APP|FACILITY|20240121120000||ADT^A01|12345|P|2.5\rPID|1|123456|123456^^^HOSPITAL^MR||PÉREZ^JUAN^MIGUEL||19900515|M|||123 MAIN ST^^CITY^STATE^12345"
  }'

4. Clientes de Prueba

Usa los clientes Python incluidos:

# Probar FHIR API
cd fhir-testing-server
python test_client.py

# Probar HL7 Processor
cd hl7-message-processor
python test_client.py

📁 Estructura del Proyecto

saludProtocols/
├── .github/
│   └── copilot-instructions.md
├── fhir-testing-server/
│   ├── app.py                 # Servidor Flask FHIR
│   ├── test_client.py         # Cliente de pruebas
│   ├── requirements.txt       # Dependencias Python
│   ├── Dockerfile            # Imagen Docker
│   └── .env.example          # Variables de entorno
├── hl7-message-processor/
│   ├── app.py                 # Procesador Flask HL7
│   ├── test_client.py         # Cliente de pruebas
│   ├── requirements.txt       # Dependencias Python
│   ├── Dockerfile            # Imagen Docker
│   └── .env.example          # Variables de entorno
├── docker-compose.yml         # Orquestación de contenedores
├── nginx.conf                 # Configuración del gateway
└── README.md                  # Esta documentación

🔧 Configuración

Variables de Entorno

Copia los archivos .env.example a .env y personaliza:

FHIR Server (.env):

SECRET_KEY=tu-clave-secreta-fhir
CLIENT_ID=fhir-test-client
CLIENT_SECRET=tu-client-secret
PORT=8080

HL7 Processor (.env):

SECRET_KEY=tu-clave-secreta-hl7
CLIENT_ID=hl7-test-client
CLIENT_SECRET=tu-client-secret
PORT=8081

🛡️ Seguridad

Para Producción

⚠️ IMPORTANTE: Antes de usar en producción:

  1. Cambiar claves secretas en archivos .env
  2. Configurar HTTPS con certificados SSL
  3. Usar base de datos real (PostgreSQL, MongoDB)
  4. Implementar logging y auditoría
  5. Configurar firewall y VPN
  6. Habilitar CORS solo para dominios específicos
  7. Implementar rate limiting más estricto

Consideraciones HIPAA

  • 🔒 Encriptación en tránsito y reposo
  • 📋 Auditoría de todos los accesos
  • 🔐 Autenticación fuerte (2FA recomendado)
  • 🚪 Control de acceso basado en roles
  • 📋 Logs de seguridad detallados

📈 Monitoring

Endpoints de salud disponibles:

  • GET /health - Estado del servidor
  • GET /fhir/metadata - Capacidades FHIR
  • Docker health checks configurados

🌐 APIs Disponibles

FHIR R4 API

Endpoint Método Descripción
/oauth/token POST Obtener token OAuth 2.0
/fhir/metadata GET CapabilityStatement
/fhir/Patient POST Crear paciente
/fhir/Patient/{id} GET Obtener paciente
/fhir/Patient GET Buscar pacientes
/fhir/Observation POST Crear observación
/fhir/Observation/{id} GET Obtener observación

HL7 v2.x API

Endpoint Método Descripción
/oauth/token POST Obtener token OAuth 2.0
/hl7/process POST Procesar mensaje HL7
/hl7/validate POST Validar mensaje HL7
/hl7/messages GET Listar mensajes procesados
/hl7/messages/{id} GET Obtener mensaje específico

🐞 Resolución de Problemas

Errores Comunes

  1. Puerto ocupado: Cambiar puertos en .env o docker-compose.yml
  2. Token expirado: Obtener nuevo token de /oauth/token
  3. CORS error: Verificar configuración de headers
  4. Mensaje HL7 inválido: Usar herramientas de validación

Logs

# Ver logs de contenedores
docker-compose logs -f fhir-server
docker-compose logs -f hl7-processor

# Logs en tiempo real
docker-compose logs -f

🤝 Contribuir

  1. Fork el proyecto
  2. Crear rama feature (git checkout -b feature/nueva-funcionalidad)
  3. Commit cambios (git commit -m 'Agregar nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Crear Pull Request

📜 Licencia

MIT License - ver archivo LICENSE para detalles.

📞 Soporte

Para soporte técnico:

  • 📞 Abrir issue en GitHub
  • 📧 Contactar al equipo de desarrollo
  • 📚 Revisar documentación adicional

⚡ Hecho con Flask, Docker y mucho ☕

Este proyecto es para testing y desarrollo. No usar en producción sin las debidas modificaciones de seguridad.

About

Suite de APIs de salud: Servidor FHIR R4 y Procesador HL7 v2.x con OAuth 2.0. APIs REST Flask con autenticación JWT, interfaces web, entornos virtuales y health checks. Ideal para desarrollo y testing de aplicaciones médicas.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published