API de chargement de patients
Chargez des dossiers patients directement dans votre espace Arkangel via API
L'API de chargement de patients permet aux établissements d'envoyer des dossiers patients directement dans leur espace Arkangel de façon programmatique, sans intervention manuelle. Une fois chargés, les fichiers sont traités automatiquement et les résultats apparaissent dans l'espace Pandora de votre équipe.
Prérequis
Contactez Arkangel pour obtenir :
- Clé API — utilisée pour authentifier chaque requête
- Team ID — identifie votre organisation au sein d'Arkangel
Formats supportés
| Format | Description | Notes |
|---|---|---|
| Dossiers cliniques, comptes-rendus de sortie, rapports de laboratoire | 1 fichier = 1 patient | |
| TXT | Notes cliniques en texte brut | 1 fichier = 1 patient |
| CSV | Données structurées de patients ou d'événements | Voir format CSV ci-dessous |
Taille maximale par fichier : 3 Mo.
Format CSV
Les fichiers CSV doivent avoir patient_id comme en-tête de la première colonne. L'en-tête de la deuxième colonne détermine le type de fichier :
Fichier patients (1 ligne = 1 patient)
La deuxième colonne peut être quelconque ou absente.
patient_id,nom,date_naissance,diagnostic
p-001,Marie Dupont,1980-03-12,BPCO
p-002,Jean Martin,1975-07-22,Asthme
Fichier événements (plusieurs lignes = 1 patient)
La deuxième colonne doit s'appeler event_id. Toutes les lignes ayant le même patient_id sont regroupées en un seul dossier patient.
patient_id,event_id,date,type_evenement,valeur,unite
p-001,e-001,2026-01-10,SpO2,94,%
p-001,e-002,2026-01-10,frequence_cardiaque,88,bpm
p-002,e-001,2026-01-11,SpO2,97,%
Charger un fichier
Endpoint
POST /api/pandora/upload-v2/upload
En-têtes
Authorization: Bearer votre_cle_api
Champs du formulaire
| Champ | Requis | Description |
|---|---|---|
file |
Oui | Le fichier à charger (PDF, TXT ou CSV) |
teamId |
Oui | Votre Team ID |
groupId |
Oui | ID du groupe Pandora dans lequel ajouter les patients |
anonymize |
Non | Envoyez true pour anonymiser les dossiers après extraction (par défaut : false) |
Requête
curl -X POST https://arkangel.ai/api/pandora/upload-v2/upload \
-H "Authorization: Bearer votre_cle_api" \
-F "file=@patients.csv" \
-F "teamId=votre_team_id" \
-F "groupId=votre_group_id" \
-F "anonymize=false"
Exemple JavaScript
const formData = new FormData();
formData.append('file', file);
formData.append('teamId', 'votre_team_id');
formData.append('groupId', 'votre_group_id');
formData.append('anonymize', 'false');
const response = await fetch('https://arkangel.ai/api/pandora/upload-v2/upload', {
method: 'POST',
headers: {
'Authorization': 'Bearer votre_cle_api'
},
body: formData
});
const result = await response.json();
Réponse
{
"success": true,
"patientCount": 3
}
patientCount indique le nombre de patients ingérés avec succès. Pour PDF et TXT c'est toujours 1. Pour CSV cela correspond au nombre de lignes (fichier patients) ou de valeurs uniques de patient_id (fichier événements).
Si certains patients n'ont pas pu être ingérés en raison d'une erreur de stockage, expectedCount est également retourné pour détecter l'écart et resoumettre les lignes manquantes :
{
"success": true,
"patientCount": 2,
"expectedCount": 3
}
Gestion des erreurs
| Code | Erreur | Description |
|---|---|---|
| 400 | invalid_file_type |
Format de fichier non supporté |
| 400 | file_too_large |
Le fichier dépasse la limite de 3 Mo |
| 400 | invalid_csv_format |
La première colonne n'est pas patient_id |
| 400 | missing_patient_id |
Une ou plusieurs lignes ont un patient_id vide |
| 401 | unauthorized |
Clé API absente ou invalide |
| 403 | forbidden |
La clé API n'a pas accès à cette équipe |
| 413 | payload_too_large |
Le corps de la requête dépasse la limite du serveur |
| 500 | internal_error |
Erreur serveur inattendue — contactez le support |
Résultat
Aucun appel supplémentaire n'est nécessaire. Une fois chargées, les données des patients sont traitées et disponibles automatiquement dans l'espace Pandora de votre équipe.
Étapes suivantes
- Authentification — Gérer votre clé API
- Référence HTTP — Voir tous les codes de statut