Cadre légal
Le registre des entrées et sorties est distinct du registre sanitaire. Il concerne la traçabilité des flux d'animaux entre établissements, à titre commercial ou non. Il est obligatoire pour tout opérateur en contact avec des chiens, chats ou furets, indépendamment du statut commercial.
Distinction avec le Registre Sanitaire
Anim'Gest implémente deux registres distincts qui répondent à deux obligations réglementaires différentes. Il est important de ne pas les confondre.
Opérateurs concernés
Tous les opérateurs exerçant des activités liées aux chiens, chats et furets sont concernés, y compris les éleveurs qui ne vendent pas plus d'une portée par an. La déclaration au registre vaut déclaration au préfet.
Délais réglementaires
Anim'Gest gère ces contraintes via des alertes automatiques : toute entrée créée sans sortie enregistrée après 72h génère une notification dans le tableau de bord du métier concerné.
Données obligatoires
Identification de l'animal — obligatoire à chaque entrée
| Donnée | Champ BDD | Réq. | Précisions réglementaires |
|---|---|---|---|
| Espèce | RES_ESPECE | ✦ | CHIEN / CHAT / FURET |
| Race | RES_RACE | ✦ | Race ou croisé — jointure table race |
| Sexe | RES_SEXE | ✦ | M / F / INCONNU |
| Statut reproducteur | RES_REPRO | ○ | ENTIER / STERILISE / INCONNU (si connu) |
| Date de naissance | RES_DATE_NAISSANCE | ✦ | Ou âge estimé au moment de l'inscription si date inconnue |
| Numéro d'identification | RES_NUM_ICAD | ✦ | Numéro I-CAD (puce ou tatouage) — 15 chiffres pour puce |
| Signes particuliers | RES_SIGNES | ○ | Robe, marques distinctives, particularités morphologiques |
Données d'entrée — obligatoires le jour J
| Donnée | Champ BDD | Délai | Précisions |
|---|---|---|---|
| Date d'entrée | RES_DATE_ENTREE | J0 | Horodatage complet (datetime) |
| Provenance | RES_PROVENANCE_TYPE | J0 | ELEVEUR / PARTICULIER / REFUGE / AUTRE_PRO / IMPORTATION |
| Nom/Raison sociale cédant | RES_CÉDANT_NOM | J0 | Identité du cédant ou de la structure de provenance |
| Adresse cédant | RES_CÉDANT_ADRESSE | J0 | Adresse complète |
| Réf. documents accompagnement | RES_REF_DOCS | ○ | Obligatoire en cas d'échange ou d'importation |
Données de sortie — dans les 72h
| Donnée | Champ BDD | Délai | Précisions |
|---|---|---|---|
| Date de sortie | RES_DATE_SORTIE | 72h | Date effective du départ de l'établissement |
| Motif de sortie | RES_MOTIF_SORTIE | 72h | CESSION_VENTE / CESSION_DON / TRANSFERT / RETOUR_PROPRIO / DECES / FUITE / AUTRE |
| Identité destinataire | RES_DEST_NOM | 72h | Nom et prénom ou raison sociale |
| Adresse destinataire | RES_DEST_ADRESSE | 72h | Adresse complète du destinataire |
| Cause du décès | RES_CAUSE_DECES | 72h | Si connue — motif DECES uniquement |
Lien I-CAD / Fichier national
Structure BDD
-- Registre des entrées et sorties des carnivores domestiques
-- Arrêté 9 novembre 2023 — Article 45
CREATE TABLE registre_entrees_sorties (
RES_ID INT(11) AUTO_INCREMENT PRIMARY KEY,
ANI_ID INT(11), -- lien animal si existant en BDD
TIE_ID INT(11), -- lien propriétaire si connu
-- Identification réglementaire (toujours requis)
RES_ESPECE ENUM('CHIEN','CHAT','FURET') NOT NULL,
RES_RACE VARCHAR(100) NOT NULL,
RES_NOM VARCHAR(100),
RES_SEXE ENUM('M','F','INCONNU') NOT NULL,
RES_REPRO ENUM('ENTIER','STERILISE','INCONNU'),
RES_DATE_NAISSANCE DATE,
RES_AGE_INSCRIPTION VARCHAR(50), -- si date naissance inconnue
RES_NUM_ICAD VARCHAR(20) NOT NULL, -- numéro puce 15 chiffres
RES_SIGNES VARCHAR(500),
-- Entrée (J0 obligatoire)
RES_DATE_ENTREE DATETIME NOT NULL,
RES_PROVENANCE_TYPE ENUM('ELEVEUR','PARTICULIER','REFUGE',
'AUTRE_PRO','IMPORTATION','NAISSANCE') NOT NULL,
RES_CEDANT_NOM VARCHAR(200) NOT NULL,
RES_CEDANT_ADRESSE TEXT NOT NULL,
RES_REF_DOCS VARCHAR(500), -- réf. docs accompagnement / certif. import
-- Sortie (72h max)
RES_DATE_SORTIE DATETIME,
RES_MOTIF_SORTIE ENUM('CESSION_VENTE','CESSION_DON','TRANSFERT',
'RETOUR_PROPRIO','DECES','FUITE','AUTRE'),
RES_DEST_NOM VARCHAR(200),
RES_DEST_ADRESSE TEXT,
RES_CAUSE_DECES VARCHAR(500), -- si DECES, cause si connue
-- Statut et métadonnées
RES_STATUT ENUM('PRESENT','SORTI','DECEDE') DEFAULT 'PRESENT',
RES_METIER VARCHAR(30) NOT NULL, -- ELEVEUR / PENSION / PET_SITTER
RES_NOTES TEXT,
RES_CREATED_AT DATETIME DEFAULT CURRENT_TIMESTAMP,
RES_UPDATED_AT DATETIME ON UPDATE CURRENT_TIMESTAMP,
RES_SORTIE_SAISIE_LE DATETIME, -- pour vérification délai 72h
FOREIGN KEY (ANI_ID) REFERENCES animal(ANI_ID) ON DELETE SET NULL,
FOREIGN KEY (TIE_ID) REFERENCES tiers(TIE_ID) ON DELETE SET NULL,
INDEX idx_res_icad (RES_NUM_ICAD),
INDEX idx_res_statut (RES_STATUT),
INDEX idx_res_metier (RES_METIER),
INDEX idx_res_entree (RES_DATE_ENTREE)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
COMMENT='Registre entrées/sorties carnivores - Arrêté 9 nov. 2023 art.45';
Routes API
| Méthode | Route | Description |
|---|---|---|
| GET | /api/registre-mouvements | Liste paginée avec filtres (statut, espèce, métier, période, search) |
| GET | /api/registre-mouvements/:id | Détail complet d'un mouvement |
| POST | /api/registre-mouvements | Enregistrer une entrée (J0 — champs requis validés) |
| PUT | /api/registre-mouvements/:id/sortie | Enregistrer la sortie / le décès (alerte si > 72h) |
| GET | /api/registre-mouvements/alertes | Animaux présents sans sortie depuis > 72h (dashboard) |
| GET | /api/registre-mouvements/export-pdf | Export PDF Puppeteer — version non modifiable pour DDPP |
| GET | /api/registre-mouvements/stats | Statistiques (entrées/sorties par période, par espèce, par motif) |
Paramètres de filtrage — GET /registre-mouvements
| Paramètre | Type | Valeurs |
|---|---|---|
| ?statut= | string | PRESENT | SORTI | DECEDE |
| ?espece= | string | CHIEN | CHAT | FURET |
| ?metier= | string | ELEVEUR | PENSION | PET_SITTER |
| ?alerte_72h= | boolean | true → retourne les entrées sans sortie > 72h |
| ?date_from= | date | Filtre date d'entrée ≥ |
| ?search= | string | Nom animal, numéro I-CAD, nom cédant/destinataire |
Cycle d'un mouvement
Interface utilisateur
Le module est accessible depuis le menu de chaque métier concerné. Un composant RegistreEntreesSortiesPage.tsx partagé accepte un paramètre metier.
/app/elevage/registre-mouvements/app/pension/registre-mouvements/app/pet-sitter/registre-mouvements- Recherche I-CAD — Champ numéro puce avec validation format ISO 11784/11785 (15 chiffres). Vérification côté serveur de la cohérence avec la fiche animal si ANI_ID est connu.
- Alertes 72h — Badge rouge sur l'icône du menu si des animaux présents n'ont pas eu leur sortie saisie dans les délais. Widget dédié sur le tableau de bord métier.
- Export PDF officiel — Génération Puppeteer d'un registre numéroté, daté, non modifiable — conforme à l'exigence de version semestrielle. Format A4 paysage avec en-tête établissement.
- Lien avec la fiche animal — Si l'animal est référencé en BDD (ANI_ID), l'entrée est liée automatiquement. Le numéro I-CAD est pré-rempli depuis la fiche animal.
- Tableau de bord statistiques — Nombre d'entrées/sorties par période, répartition par espèce et par motif de sortie. Aide au bilan annuel DDPP.
Règles métier
- Pas de blanc ni de rature : Conformément à la réglementation, aucune suppression d'entrée n'est possible. Toute correction est enregistrée comme un événement séparé avec motif. La suppression est désactivée en UI.
- Alerte délai 72h : Anim'Gest surveille les entrées sans sortie depuis plus de 72h et génère une alerte automatique. La route
GET /api/registre-mouvements/alertesretourne ces cas en temps réel. - Entrée immutable après sortie : Une fois la sortie ou le décès enregistré, les données de l'animal (espèce, race, numéro I-CAD) ne peuvent plus être modifiées pour préserver l'intégrité du registre.
- Conservation 3 ans : Aucune suppression automatique avant 3 ans révolus après la date de sortie. L'interface n'affiche pas de bouton de suppression pour les entrées de moins de 3 ans.
- I-CAD obligatoire : Le numéro d'identification est obligatoire pour les chiens, chats et furets (identifiés par micropuce depuis 2012 pour les chiens, 2012 pour les chats nés après 2012). Validation format 15 chiffres au saisie.
- Naissance = entrée immédiate : Pour les naissances en élevage, chaque chiot/chaton/fureton doit être enregistré en entrée dès sa naissance. Provenance = NAISSANCE, cédant = l'établissement lui-même.
- Version semestrielle : La route d'export PDF génère une version numérotée et datée. Anim'Gest propose un rappel automatique tous les 6 mois pour déclencher cette sauvegarde réglementaire.
- Indépendance d'Eliot : Le registre des entrées/sorties est une obligation réglementaire — il fonctionne intégralement sans Eliot. Les outils IA viennent en complément uniquement.
Quand utiliser quel registre ?
| Situation | Registre Sanitaire | Registre E/S |
|---|---|---|
| Animal en pension (hébergement) | ✅ Obligatoire | ✅ Obligatoire |
| Vente d'un chiot en élevage | — Non requis | ✅ Obligatoire |
| Naissance en élevage | — Non requis | ✅ Obligatoire (J0) |
| Garde de jour (sans nuit) | — Non requis | ⚠️ Recommandé |
| Séance comportementaliste | — Non requis | — Non requis |
| Toilettage sans hébergement | — Non requis | — Non requis |
| Décès en pension | ✅ Journal URGENCE | ✅ Motif DECES (72h) |
Intégration Eliot (futur)
| Tool Eliot | Description | Statut |
|---|---|---|
| get_alertes_mouvements | Lister les animaux présents sans sortie enregistrée depuis > 72h | Planifié S68 |
| create_entree_animal | Enregistrer vocalement une entrée depuis Eliot (scan puce → fiche auto) | Planifié S68 |
| enregistrer_sortie | Enregistrer la sortie d'un animal via Eliot avec confirmation vocale du destinataire | Planifié S69 |