API de Carga de Pacientes
Suba registros de pacientes directamente a su workspace de Arkangel mediante API
La API de Carga de Pacientes permite a las instituciones enviar registros de pacientes directamente a su workspace de Arkangel de forma programática, sin intervención manual. Una vez cargados, los archivos se procesan automáticamente y los resultados aparecen en el workspace Pandora de su equipo.
Requisitos previos
Contacte a Arkangel para recibir:
- API key — usada para autenticar cada solicitud
- Team ID — identifica a su organización dentro de Arkangel
Formatos soportados
| Formato | Descripción | Notas |
|---|---|---|
| Historias clínicas, resúmenes de alta, reportes de laboratorio | 1 archivo = 1 paciente | |
| TXT | Notas clínicas en texto plano | 1 archivo = 1 paciente |
| CSV | Datos estructurados de pacientes o eventos | Ver formato CSV abajo |
Tamaño máximo por archivo: 3MB.
Formato CSV
Los archivos CSV deben tener patient_id como encabezado de la primera columna. El encabezado de la segunda columna determina el tipo de archivo:
Archivo de pacientes (1 fila = 1 paciente)
La segunda columna puede ser cualquier cosa u omitirse.
patient_id,nombre,fecha_nacimiento,diagnostico
p-001,Ana García,1980-03-12,EPOC
p-002,Carlos López,1975-07-22,Asma
Archivo de eventos (varias filas = 1 paciente)
La segunda columna debe llamarse event_id. Todas las filas con el mismo patient_id se agrupan en un solo registro de paciente.
patient_id,event_id,fecha,tipo_evento,valor,unidad
p-001,e-001,2026-01-10,SpO2,94,%
p-001,e-002,2026-01-10,frecuencia_cardiaca,88,lpm
p-002,e-001,2026-01-11,SpO2,97,%
Cargar un archivo
Endpoint
POST /api/pandora/upload-v2/upload
Headers
Authorization: Bearer su_api_key
Campos del formulario
| Campo | Requerido | Descripción |
|---|---|---|
file |
Sí | El archivo a cargar (PDF, TXT o CSV) |
teamId |
Sí | Su Team ID |
groupId |
Sí | ID del grupo Pandora al que se agregarán los pacientes |
anonymize |
No | Envíe true para anonimizar los registros tras la extracción (por defecto: false) |
Solicitud
curl -X POST https://arkangel.ai/api/pandora/upload-v2/upload \
-H "Authorization: Bearer su_api_key" \
-F "file=@pacientes.csv" \
-F "teamId=su_team_id" \
-F "groupId=su_group_id" \
-F "anonymize=false"
Ejemplo en JavaScript
const formData = new FormData();
formData.append('file', file);
formData.append('teamId', 'su_team_id');
formData.append('groupId', 'su_group_id');
formData.append('anonymize', 'false');
const response = await fetch('https://arkangel.ai/api/pandora/upload-v2/upload', {
method: 'POST',
headers: {
'Authorization': 'Bearer su_api_key'
},
body: formData
});
const result = await response.json();
Respuesta
{
"success": true,
"patientCount": 3
}
patientCount refleja el número de pacientes ingresados correctamente. Para PDF y TXT siempre es 1. Para CSV corresponde al número de filas (archivo de pacientes) o valores únicos de patient_id (archivo de eventos).
Si algún paciente no pudo ser ingresado por un error de almacenamiento, también se devuelve expectedCount para que pueda detectar la discrepancia y reenviar las filas faltantes:
{
"success": true,
"patientCount": 2,
"expectedCount": 3
}
Manejo de errores
| Código | Error | Descripción |
|---|---|---|
| 400 | invalid_file_type |
Formato de archivo no soportado |
| 400 | file_too_large |
El archivo supera el límite de 3MB |
| 400 | invalid_csv_format |
La primera columna no es patient_id |
| 400 | missing_patient_id |
Una o más filas tienen patient_id vacío |
| 401 | unauthorized |
API key ausente o inválida |
| 403 | forbidden |
La API key no tiene acceso a este equipo |
| 413 | payload_too_large |
El cuerpo de la solicitud supera el límite del servidor |
| 500 | internal_error |
Error inesperado del servidor — contacte a soporte |
Resultado
No se requieren llamadas adicionales. Una vez cargados, los datos de los pacientes se procesan y quedan disponibles automáticamente en el workspace Pandora de su equipo.
Próximos pasos
- Autenticación — Cómo gestionar su API key
- Referencia HTTP — Ver todos los códigos de estado