API para integrar el visor en tu sistema
Manda un archivo DICOM desde tu backend y recibe la ficha técnica completa del estudio en JSON: paciente, equipo, técnica, detector y los datos para dibujar la imagen. Pensado para expedientes electrónicos, PACS o cualquier sistema que ya reciba radiografías y quiera mostrar su ficha sin construir un lector DICOM propio.
Cómo empezar
- Escríbenos (el correo está al final de esta página) o pídele a tu contacto en Network BLU una llave. Hoy las llaves se emiten a mano: el plan API todavía no se compra en línea.
- Guarda la llave en tu backend, nunca en JavaScript visible en una página pública: cualquiera que la vea podría consultarla a tu costo.
- Manda tus archivos con una petición como la de abajo.
Autenticación
Cada llamada lleva la llave en la cabecera X-Api-Key. No hay sesión, ni cookies, ni token que venza: la llave vale hasta que la revoquemos (a tu pedido, o si se filtra).
Extremo
Una sola llamada, con el archivo DICOM como multipart/form-data:
POST /api/v1.php
curl -X POST https://images.emergencias.lat/api/v1.php \
-H "X-Api-Key: emg_live_TU_LLAVE" \
-F "file=@radiografia.dcm" \
-F "formato=ficha"
Parámetros
- file (archivo, obligatorio)
- El archivo DICOM. Límite: el mismo del sitio (64 MB de fábrica).
- formato (texto, opcional (por defecto "ficha"))
- "ficha" responde el JSON de abajo. "dicom" responde el mismo archivo ya validado (Content-Type: application/dicom), útil para confirmar que es un estudio soportado antes de reenviarlo o guardarlo tú.
Respuesta (formato=ficha)
Ejemplo con valores inventados (ningún dato real de paciente sale de aquí):
{
"request_id": "req_3f9a1c2b7e4d",
"llave": "Nombre del cliente",
"quota": { "tier": "api", "limit": null, "used": 12, "remaining": null, "counted": true },
"ficha": {
"version": 1,
"paciente": { "nombre_completo": "Doe John", "id": "0001", "sexo": "M", "nacimiento": "1990-04-12", "edad": "34A" },
"estudio": { "sitio": "Clínica Ejemplo", "fecha": "2024-06-01", "hora": "14:32:00", "modalidad": "DX",
"parte_cuerpo": "TORAX", "vista": "PA", "descripcion": "Radiografía de tórax", "accession": "ACC0001" },
"equipo": { "fabricante": "Ejemplo Medical", "modelo": "Modelo X100", "estacion": "SALA1" },
"detector": { "fabricante": "Ejemplo Medical", "pixel_mm": 0.14, "ultima_calibracion": "2024-01-15" },
"tecnica": { "kvp": 90, "mas": 3.2, "sid_mm": 1100 },
"imagen": { "filas": 2048, "columnas": 2048, "bits_almacenados": 12, "fotometria": "MONOCHROME2", "comprimido": false }
},
"advertencias": [],
"imagen": {
"renderable": true, "pixel_offset": 3421, "pixel_length": 8388608,
"rows": 2048, "columns": 2048, "window": { "center": 2048, "width": 4096 },
"pixel_spacing": [0.14, 0.14]
}
}
Qué trae la ficha técnica
- paciente
- Nombre, identificación, sexo, nacimiento y edad calculada al momento del estudio.
- estudio
- Sitio, fecha y hora, modalidad (DX, CR), protocolo, parte del cuerpo, vista, descripción, número de accession.
- equipo
- Fabricante, modelo, estación y versión del software del equipo que tomó la imagen.
- detector
- Fabricante, modelo, tamaño de píxel en mm y fecha de la última calibración conocida.
- tecnica
- kVp, mA, ms, mAs, rejilla, filtro, tamaño de foco y distancia fuente-detector (SID).
- personal
- Operador, quien leyó el estudio, médico solicitante y referente, si el archivo los trae.
- imagen
- Filas, columnas, bits, fotometría, si viene comprimida, la ventana (centro/ancho) sugerida por el archivo y si declara texto grabado en los píxeles.
Y los píxeles de la imagen?
La respuesta trae imagen.pixel_offset e imagen.pixel_length: la posición exacta de los píxeles dentro del MISMO archivo que ya tienes. No hace falta que te mandemos la imagen aparte. Si prefieres el archivo validado completo, pide formato=dicom.
Próximamente
Una imagen PNG o JPEG ya renderizada por el servidor (con la ventana/nivel aplicada). Hoy tu sistema puede dibujarla con los datos de arriba usando una librería DICOM del lado del cliente (por ejemplo Cornerstone3D), igual que hace este sitio.
Errores
| 401 | invalid_api_key | Falta la cabecera, la llave no existe o fue revocada. |
| 422 | validation_failed | Falta el archivo o "formato" no es uno de los válidos. |
| 422 | invalid_dicom | El archivo no se pudo leer como DICOM. |
| 422 | unsupported_content / unsupported_modality | El estudio no trae píxeles de una sola imagen, o su modalidad no está soportada. |
| 413 | payload_too_large | El archivo excede el límite del sitio. |
| 500 | server_error | Error nuestro; escríbenos si se repite. |
Cupo
Cada respuesta trae "quota" con el uso de hoy. El plan API no tiene tope diario (limit: null): un mismo estudio (mismo Study UID) solo se cuenta una vez al día aunque lo consultes varias veces.
Privacidad
El archivo se procesa en memoria/temporal y se descarta al responder: no lo guardamos, igual que con las consultas hechas desde el navegador. Ver la declaración de no almacenamiento.
Escríbenos para pedir una llave: desarrollo@gruponetblu.com
Versión 1, 27 de septiembre de 2026.
