Mediclad

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

  1. 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.
  2. 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.
  3. 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

401invalid_api_keyFalta la cabecera, la llave no existe o fue revocada.
422validation_failedFalta el archivo o "formato" no es uno de los válidos.
422invalid_dicomEl archivo no se pudo leer como DICOM.
422unsupported_content / unsupported_modalityEl estudio no trae píxeles de una sola imagen, o su modalidad no está soportada.
413payload_too_largeEl archivo excede el límite del sitio.
500server_errorError 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.