Documentación v1.0
Manual de integración HIS
Guía para el equipo del sistema HIS que integrará altas, consultas, modificaciones y cancelaciones de estudios en la worklist DICOM de Instituto Privado de Salud.
Paciente
DNI
Búsqueda y datos demográficos
Estudio
Accession Number
Clave única por orden
Seguridad
Bearer Token
Sanctum · 24 h de vigencia
Servidor de pruebas
Todas las URLs deben apuntar al entorno acordado con el administrador del PACS.
| URL base aplicación | https://docs.ipsalud.com.ar |
|---|---|
| API REST (v1) | https://api.ipsalud.com.ar |
| Swagger UI | https://docs.ipsalud.com.ar/integracion/swagger |
| Formato | JSON · Content-Type: application/json · Accept: application/json |
| HTTPS | Recomendado en producción. En laboratorio puede usarse HTTP interno. |
Credenciales de prueba
Usuario dedicado con rol integracion y permisos API.
his@worklist.local
Autenticación
Usuario y contraseña → token Bearer en todas las peticiones protegidas.
1. Login
POST https://api.ipsalud.com.ar/auth/login
{
"email": "his@worklist.local",
"password": "<contraseña>"
}
2. Usar el token
Authorization: Bearer <access_token>
Endpoints de sesión
GET /auth/me— perfil yclient_idPOST /auth/logout— revoca el token actual
Límite login: 10 intentos/min por IP · API: 120 req/min por usuario.
Identificadores
DNI — Paciente
GET /patients?dni= o GET /patients/{dni}
Accession Number — Estudio
GET/PATCH/DELETE /worklist/{accession_number}
Generado en el alta (ej. RES2505210001).
Flujo recomendado
-
1
Login
POST /auth/login → guardar access_token
-
2
Catálogo
GET /catalog/procedures y /catalog/devices (códigos reales)
-
3
Alta
POST /worklist con procedure_code + station_aet del catálogo
-
4
Consulta
GET /worklist/{accession_number} para confirmar estado
-
5
Cambios
PATCH /worklist/{accession} si reprograman
-
6
Cancelación
DELETE /worklist/{accession} (baja lógica)
En altas repetidas use header Idempotency-Key (UUID del HIS) para evitar duplicados.
Catálogo (obligatorio antes del alta)
| Método | Descripción |
|---|---|
GET /catalog/sites | Sedes (site_code en el alta) |
GET /catalog/procedures?modality=CT | Códigos de estudio → procedure_code |
GET /catalog/devices?site_code=RES | AE Titles → station_aet |
Worklist
| Método | Ruta | Acción |
|---|---|---|
| GET | /worklist | Listar (filtros: dni, fecha, modalidad, status) |
| POST | /worklist | Alta + envío MWL |
| GET | /worklist/{accession} | Detalle |
| PATCH | /worklist/{accession} | Modificar |
| DELETE | /worklist/{accession} | Cancelar |
| POST | /worklist/{accession}/mwl/resend | Reenviar MWL |
Estados de orden
scheduled · sent_to_mwl · modified · started · completed · cancelled
Códigos de error
| HTTP | Significado | Acción sugerida |
|---|---|---|
| 401 | No autenticado | Renovar token (login) |
| 403 | Sin permiso API | Verificar rol integracion |
| 404 | No encontrado | Revisar DNI o accession |
| 409 | Conflicto de estado | No cancelar estudios iniciados |
| 422 | Validación / catálogo | Consultar GET /catalog/* |
| 429 | Rate limit | Reintentar con backoff |
| 500 | Error interno | Contactar soporte con hora y payload |
Ejemplos curl
Reemplazá TOKEN, PROC_CODE y STATION_AET por valores del catálogo.
Login + token
TOKEN=$(curl -s -X POST https://api.ipsalud.com.ar/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"his@worklist.local","password":"***"}' \
| jq -r '.data.access_token')
Catálogo CT
curl -s "https://api.ipsalud.com.ar/catalog/procedures?modality=CT" \
-H "Authorization: Bearer $TOKEN" | jq .
curl -s "https://api.ipsalud.com.ar/catalog/devices?site_code=RES&modality=CT" \
-H "Authorization: Bearer $TOKEN" | jq .
Alta worklist
curl -s -X POST https://api.ipsalud.com.ar/worklist \
-H "Authorization: Bearer $TOKEN" \
-H "Idempotency-Key: his-$(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"site_code": "RES",
"patient": {
"dni": "30123456",
"last_name": "GARCIA",
"first_name": "JUAN",
"birth_date": "1980-05-10",
"sex": "M"
},
"order": {
"scheduled_at": "2026-05-21 10:30:00",
"priority": "routine",
"requesting_physician": "DR. PEREZ"
},
"studies": [{
"procedure_code": "PROC_CODE",
"station_aet": "STATION_AET",
"scheduled_start_at": "2026-05-21 10:30:00"
}]
}'
Checklist de pruebas
- ☐ Login exitoso y token válido
- ☐ GET /catalog/procedures devuelve al menos un código
- ☐ GET /catalog/devices devuelve station_aet
- ☐ POST /worklist crea orden (201) con accession_number
- ☐ GET /worklist/{accession} refleja paciente y estudios
- ☐ PATCH cambia prioridad o fecha
- ☐ POST mwl/resend sin error
- ☐ DELETE cancela orden no iniciada
- ☐ DELETE sobre orden started devuelve 409
- ☐ Reintento POST con mismo Idempotency-Key no duplica