Skip to content

J4t1x/ohif-viewer

Repository files navigation

OHIF Viewer

Visor de imágenes médicas basado en web, zero-footprint, que funciona 100% en el navegador. OHIF (Open Health Imaging Foundation) es una plataforma open source para visualización avanzada de imágenes médicas DICOM.

🚀 Características

  • Zero-footprint: No requiere instalación en el cliente
  • Basado en Web: Funciona en cualquier navegador moderno
  • DICOMweb: Protocolo estándar para comunicación
  • Extensible: Soporta plugins y modos personalizados
  • Multi-modalidad: CT, MRI, PET, US, y más
  • Herramientas Avanzadas: Mediciones, anotaciones, MPR, 3D

📋 Requisitos

  • Docker
  • Docker Compose
  • Servidor PACS con DICOMweb (Orthanc o dcm4chee)

🎯 Inicio Rápido

Opción 1: Despliegue en Railway (Recomendado para Producción)

Deploy on Railway

  1. Crear cuenta en Railway: Ve a railway.app y crea una cuenta

  2. Crear nuevo proyecto:

    • Click en "New Project"
    • Selecciona "Deploy from GitHub repo"
    • Conecta tu repositorio
  3. Configurar variables de entorno: En el dashboard de Railway, agrega las siguientes variables:

    PACS_SOURCE_NAME=orthanc
    PACS_FRIENDLY_NAME=Orthanc PACS
    PACS_WADO_URI_ROOT=https://tu-servidor-pacs.com/wado
    PACS_QIDO_ROOT=https://tu-servidor-pacs.com/dicom-web
    PACS_WADO_ROOT=https://tu-servidor-pacs.com/dicom-web
    
  4. Desplegar: Railway detectará automáticamente el Dockerfile y desplegará la aplicación

  5. Acceder: Railway generará una URL pública para tu aplicación

Opción 2: Desarrollo Local con Docker

Para Orthanc (por defecto):

# Ya está configurado en app-config.js
docker-compose up -d

Para dcm4chee:

# Reemplazar el archivo de configuración
cp app-config-dcm4chee.js app-config.js
docker-compose up -d

Acceder al visor: http://localhost:3000

🔧 Configuración

Conectar con Orthanc

Edita app-config.js:

dataSources: [
  {
    namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
    sourceName: 'orthanc',
    configuration: {
      friendlyName: 'Orthanc PACS',
      name: 'orthanc',
      wadoUriRoot: 'http://localhost:8042/wado',
      qidoRoot: 'http://localhost:8042/dicom-web',
      wadoRoot: 'http://localhost:8042/dicom-web',
    },
  },
]

Conectar con dcm4chee

Edita app-config.js:

dataSources: [
  {
    namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
    sourceName: 'dcm4chee',
    configuration: {
      friendlyName: 'dcm4chee PACS',
      name: 'dcm4chee',
      wadoUriRoot: 'http://localhost:8081/dcm4chee-arc/aets/DCM4CHEE/wado',
      qidoRoot: 'http://localhost:8081/dcm4chee-arc/aets/DCM4CHEE/rs',
      wadoRoot: 'http://localhost:8081/dcm4chee-arc/aets/DCM4CHEE/rs',
    },
  },
]

Múltiples Fuentes de Datos

Puedes configurar múltiples servidores PACS:

dataSources: [
  {
    namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
    sourceName: 'orthanc',
    configuration: {
      friendlyName: 'Orthanc Local',
      // ... configuración Orthanc
    },
  },
  {
    namespace: '@ohif/extension-default.dataSourcesModule.dicomweb',
    sourceName: 'dcm4chee',
    configuration: {
      friendlyName: 'dcm4chee Hospital',
      // ... configuración dcm4chee
    },
  },
]

📡 Puertos

Puerto Descripción
3000 OHIF Viewer

🏗️ Arquitectura

┌─────────────────────────────────────┐
│      Navegador Web (Cliente)       │
│  ┌───────────────────────────────┐  │
│  │      OHIF Viewer (React)      │  │
│  │  - Renderizado de imágenes    │  │
│  │  - Herramientas de medición   │  │
│  │  - Interfaz de usuario        │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘
              │
              │ DICOMweb (HTTP/REST)
              ▼
┌─────────────────────────────────────┐
│       Servidor PACS                 │
│  (Orthanc o dcm4chee)               │
│  - Almacenamiento DICOM             │
│  - APIs DICOMweb                    │
│  - Gestión de estudios              │
└─────────────────────────────────────┘

🛠️ Comandos Útiles

# Iniciar el visor
docker-compose up -d

# Ver logs
docker-compose logs -f

# Detener el visor
docker-compose down

# Reiniciar el visor
docker-compose restart

# Ver estado
docker-compose ps

🔍 Uso del Visor

Navegación Básica

  1. Lista de Estudios: Vista inicial con todos los estudios disponibles
  2. Búsqueda: Filtrar por nombre, ID, fecha, modalidad
  3. Abrir Estudio: Click en un estudio para visualizar

Herramientas Disponibles

  • Zoom: Rueda del mouse o herramienta de zoom
  • Pan: Click derecho + arrastrar
  • Window/Level: Click izquierdo + arrastrar
  • Mediciones: Longitud, área, ángulos
  • Anotaciones: Texto, flechas
  • MPR: Reconstrucción multiplanar
  • 3D: Renderizado volumétrico

Atajos de Teclado

Tecla Acción
W Window/Level
Z Zoom
P Pan
L Medición de longitud
R Reset viewport
I Invertir colores

🔌 Integración con Ecosistema

Con Orthanc

# Terminal 1: Iniciar Orthanc
cd ../orthanc-pacs
docker-compose up -d

# Terminal 2: Iniciar OHIF
cd ../ohif-viewer
docker-compose up -d

Acceder a:

Con dcm4chee

# Terminal 1: Iniciar dcm4chee
cd ../dcm4chee-pacs
docker-compose up -d

# Terminal 2: Iniciar OHIF (con config dcm4chee)
cd ../ohif-viewer
cp app-config-dcm4chee.js app-config.js
docker-compose restart

Acceder a:

🌐 CORS y Networking

Si tienes problemas de CORS, asegúrate de que el servidor PACS permita solicitudes desde el origen de OHIF.

Para Orthanc, agrega a orthanc.json:

{
  "RemoteAccessAllowed": true,
  "HttpsCACertificates": "",
  "HttpsVerifyPeers": false
}

Para dcm4chee, configura CORS en WildFly.

🎨 Personalización

Cambiar el Tema

Edita app-config.js:

window.config = {
  // ... otras configuraciones
  theme: {
    primaryColor: '#5ACCE6',
    backgroundColor: '#1E1E1E',
  },
}

Agregar Extensiones

extensions: [
  '@ohif/extension-cornerstone',
  '@ohif/extension-measurement-tracking',
  // Agrega más extensiones aquí
]

🆘 Troubleshooting

No se muestran estudios

  1. Verifica que el servidor PACS esté corriendo
  2. Verifica la configuración de URLs en app-config.js
  3. Revisa la consola del navegador (F12) para errores CORS
  4. Verifica que haya estudios cargados en el PACS

Errores de CORS

# Ver logs del navegador
# Presiona F12 → Console

# Verificar conectividad al PACS
curl http://localhost:8042/dicom-web/studies

Imágenes no cargan

  1. Verifica que el PACS soporte DICOMweb
  2. Verifica las URLs de WADO en la configuración
  3. Revisa los logs del PACS

📚 Recursos

� Despliegue en Railway

Requisitos Previos

  • Cuenta en Railway
  • Repositorio Git con el código
  • Servidor PACS accesible públicamente con DICOMweb

Pasos de Despliegue

  1. Conectar Repositorio:

    • Ve a railway.app
    • Click en "New Project" → "Deploy from GitHub repo"
    • Selecciona tu repositorio
  2. Configurar Variables de Entorno: Railway necesita las siguientes variables para conectarse a tu PACS:

    Variable Descripción Ejemplo
    PACS_SOURCE_NAME Nombre del origen PACS orthanc o dcm4chee
    PACS_FRIENDLY_NAME Nombre amigable Orthanc PACS
    PACS_WADO_URI_ROOT URL WADO URI https://pacs.ejemplo.com/wado
    PACS_QIDO_ROOT URL QIDO-RS https://pacs.ejemplo.com/dicom-web
    PACS_WADO_ROOT URL WADO-RS https://pacs.ejemplo.com/dicom-web
  3. Despliegue Automático:

    • Railway detectará el Dockerfile automáticamente
    • El build comenzará inmediatamente
    • El despliegue toma aproximadamente 2-3 minutos
  4. Obtener URL Pública:

    • Railway generará una URL como https://tu-app.up.railway.app
    • Puedes configurar un dominio personalizado en Settings

Configuración para Diferentes PACS

Para Orthanc:

PACS_SOURCE_NAME=orthanc
PACS_FRIENDLY_NAME=Orthanc PACS
PACS_WADO_URI_ROOT=https://tu-orthanc.com/wado
PACS_QIDO_ROOT=https://tu-orthanc.com/dicom-web
PACS_WADO_ROOT=https://tu-orthanc.com/dicom-web

Para dcm4chee:

PACS_SOURCE_NAME=dcm4chee
PACS_FRIENDLY_NAME=dcm4chee PACS
PACS_WADO_URI_ROOT=https://tu-dcm4chee.com/dcm4chee-arc/aets/DCM4CHEE/wado
PACS_QIDO_ROOT=https://tu-dcm4chee.com/dcm4chee-arc/aets/DCM4CHEE/rs
PACS_WADO_ROOT=https://tu-dcm4chee.com/dcm4chee-arc/aets/DCM4CHEE/rs

Archivos de Configuración Railway

El proyecto incluye los siguientes archivos para Railway:

  • railway.toml: Configuración de build y deploy
  • Dockerfile: Imagen Docker optimizada
  • start.sh: Script de inicio con sustitución de variables
  • app-config-template.js: Template con variables de entorno
  • .railwayignore: Archivos excluidos del build

Troubleshooting Railway

Error: No se conecta al PACS

  • Verifica que las URLs del PACS sean accesibles públicamente
  • Revisa que las variables de entorno estén correctamente configuradas
  • Verifica los logs en Railway Dashboard

Error: CORS

  • Asegúrate de que tu PACS permita solicitudes desde el dominio de Railway
  • Configura CORS en tu servidor PACS para permitir el origen de Railway

Ver Logs:

# En Railway Dashboard → Deployments → View Logs

Actualizar Despliegue

Railway se actualiza automáticamente con cada push a tu rama principal:

git add .
git commit -m "Actualización de configuración"
git push origin main

Costos

Railway ofrece:

  • Plan Hobby: $5/mes de crédito gratuito
  • Plan Pro: $20/mes con más recursos
  • El visor OHIF consume recursos mínimos (~512MB RAM)

�🔐 Seguridad

⚠️ Importante: Esta configuración es para desarrollo/pruebas.

Para producción:

  1. HTTPS: Usa certificados SSL/TLS (Railway lo provee automáticamente)
  2. Autenticación: Implementa login de usuarios
  3. CORS: Configura orígenes permitidos específicos en tu PACS
  4. Firewall: Restringe acceso a puertos del PACS
  5. Cumplimiento: HIPAA/GDPR según jurisdicción
  6. Variables de Entorno: Nunca expongas credenciales en el código

📝 Notas

  • OHIF es solo un visor, no almacena imágenes
  • Requiere un servidor PACS con DICOMweb
  • Funciona 100% en el navegador del cliente
  • No requiere instalación en el cliente
  • Compatible con todos los navegadores modernos

🤝 Soporte

📝 Licencia

OHIF es software libre bajo licencia MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors