⚖️ Réglementation • Arrêté 3 avril 2014

Registre de suivi sanitaire
et de santé des animaux

Documentation complète du module Registre Sanitaire d'Anim'Gest — conforme à l'arrêté ministériel du 3 avril 2014 fixant les règles sanitaires et de protection animale auxquelles doivent satisfaire les activités liées aux animaux de compagnie d'espèces domestiques.

Module actif — S65
2 tables BDD
5 routes API
🐾

Métiers concernés

Le module Registre Sanitaire est activé pour les métiers hébergeant des animaux. Il est désactivé pour les métiers sans hébergement (comportementaliste, éducateur canin, ostéopathe).

🏡 Pension / Chenil
🐱 Chatterie
🏠 Pet-Sitter (hébergement)
🐎 Centre Équestre (pension chevaux)
🌿 Naturopathe (pension possible)
🏋️ Sport Canin (camp d'entraînement)
🐕 Éducateur canin — non hébergeur
🦮 Comportementaliste — non hébergeur
💆 Ostéopathe — non hébergeur
✂️ Toiletteur — non hébergeur
ℹ️
Dans Anim'Gest, le paramètre métier MODULE_REGISTRE_SANITAIRE = true active l'accès au registre. Ce paramètre est configurable depuis Paramètres → Modules. Seuls les métiers avec hébergement doivent l'activer.
📌

Obligations réglementaires

L'arrêté du 3 avril 2014 définit précisément les informations devant figurer dans le registre pour chaque animal accueilli.

  • 🔴
    Identification de l'animal — Numéro de tatouage ou de puce électronique (numéro I-CAD), espèce, race, nom, date de naissance estimée, sexe.
  • 🔴
    Identification du propriétaire — Nom, prénom, adresse complète, téléphone principal, téléphone d'urgence.
  • 🔴
    Dates d'entrée et de sortie — Avec heure précise. La sortie doit être enregistrée même en cas de décès ou de transfert vétérinaire.
  • 🔴
    État sanitaire à l'entrée — Observations physiques générales, comportement, toute anomalie constatée, traitement en cours.
  • 🔴
    Statut vaccinal — Vaccin contre la rage (obligatoire pour pension), DHPPi pour les chiens, typhus/coryza pour les chats. Date du dernier rappel et date d'échéance.
  • 🔴
    Médecin vétérinaire habituel — Nom du vétérinaire, nom de la clinique, téléphone. Utilisé en cas d'urgence médicale pendant le séjour.
  • 🟠
    Traitement en cours — Médicament, posologie, fréquence, durée, remarques particulières. Nécessite un journal de suivi.
  • 🟠
    Alimentation — Type d'alimentation (croquettes, pâtée, BARF), marque, quantité, fréquence. Allergies alimentaires connues.
  • 🟡
    Événements pendant le séjour — Journal chronologique des faits sanitaires : blessure, vomissement, diarrhée, refus d'alimentation, appel vétérinaire.
  • 🟡
    Contact d'urgence alternatif — Personne à contacter si le propriétaire est injoignable (autre téléphone, email).
⚠️
Vaccination antirabique : En pension/chenil, la vaccination contre la rage est obligatoire pour tout chien accueilli. Sans carnet de vaccination à jour présentant le vaccin antirabique valide, l'établissement peut légalement refuser l'accueil de l'animal.
📊

Données enregistrées

Informations du séjour — obligatoires

Obligatoire
Optionnel
ChampTypeRéq.Description
ANI_IDINT FKRéférence animal (table animal)
TIE_IDINT FKRéférence propriétaire (table tiers)
RSS_DATE_ENTREEDATETIMEDate et heure d'entrée dans l'établissement
RSS_DATE_SORTIEDATETIMEDate et heure de sortie prévue (modifiable)
RSS_DATE_SORTIE_REELLEDATETIMEDate et heure de sortie effective (à la clôture)
RSS_STATUTENUMEN_COURS / CLOTURE / INCIDENT
RSS_ETAT_ENTREETEXTObservation état physique et comportemental à l'entrée
RSS_ETAT_SORTIETEXTObservation état à la sortie / clôture
RSS_VACCIN_RAGEDATEDate de validité du vaccin antirabique
RSS_VACCIN_AUTREVARCHARAutres vaccinations (DHPP, typhus, leucose…)
RSS_TRAITEMENTTEXTTraitement médical en cours : médicament + posologie
RSS_ALIMENTATIONTEXTType, marque, quantité, fréquence, allergies
RSS_VETO_NOMVARCHARNom du vétérinaire habituel
RSS_VETO_TELVARCHARTéléphone de la clinique vétérinaire
RSS_URGENCE_NOMVARCHARNom du contact d'urgence (si propriétaire absent)
RSS_URGENCE_TELVARCHARTéléphone du contact d'urgence
RSS_AUTORISATION_SOINSBOOLEANAutorisation du propriétaire pour soins vétérinaires d'urgence
RSS_METIERVARCHARMétier créateur : PENSION / PET_SITTER / EQUESTRE
RSS_NOTESTEXTNotes libres complémentaires

Journal d'événements — table registre_sanitaire_evenement

ChampTypeRéq.Description
RSE_IDINT PKIdentifiant unique
RSS_IDINT FKRéférence séjour
RSE_DATEDATETIMEDate et heure de l'événement
RSE_TYPEENUMALIMENTATION / SANTE / COMPORTEMENT / TRAITEMENT / VETERINAIRE / AUTRE
RSE_DESCRIPTIONTEXTDescription de l'événement
RSE_GRAVITEENUMFAIBLE / MODEREE / ELEVEE / URGENCE
RSE_AUTEURVARCHARNom de l'employé ayant enregistré l'événement
🗃️

Structure BDD

Migration SQL — S65 SQL
-- Table principale du registre sanitaire
CREATE TABLE registre_sanitaire_sejour (
  RSS_ID               INT(11) AUTO_INCREMENT PRIMARY KEY,
  ANI_ID               INT(11) NOT NULL,
  TIE_ID               INT(11) NOT NULL,
  RSS_DATE_ENTREE      DATETIME NOT NULL,
  RSS_DATE_SORTIE      DATETIME,
  RSS_DATE_SORTIE_REELLE DATETIME,
  RSS_STATUT           ENUM('EN_COURS','CLOTURE','INCIDENT') DEFAULT 'EN_COURS',
  RSS_ETAT_ENTREE      TEXT NOT NULL,
  RSS_ETAT_SORTIE      TEXT,
  RSS_VACCIN_RAGE      DATE,
  RSS_VACCIN_AUTRE     VARCHAR(500),
  RSS_TRAITEMENT       TEXT,
  RSS_ALIMENTATION     TEXT,
  RSS_VETO_NOM         VARCHAR(150) NOT NULL,
  RSS_VETO_TEL         VARCHAR(20) NOT NULL,
  RSS_URGENCE_NOM      VARCHAR(150) NOT NULL,
  RSS_URGENCE_TEL      VARCHAR(20) NOT NULL,
  RSS_AUTORISATION_SOINS TINYINT(1) DEFAULT 0,
  RSS_METIER           VARCHAR(30) NOT NULL,
  RSS_NOTES            TEXT,
  RSS_CREATED_AT       DATETIME DEFAULT CURRENT_TIMESTAMP,
  RSS_UPDATED_AT       DATETIME ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (ANI_ID) REFERENCES animal(ANI_ID),
  FOREIGN KEY (TIE_ID) REFERENCES tiers(TIE_ID),
  INDEX idx_rss_animal (ANI_ID),
  INDEX idx_rss_tiers (TIE_ID),
  INDEX idx_rss_statut (RSS_STATUT)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Journal chronologique des événements
CREATE TABLE registre_sanitaire_evenement (
  RSE_ID               INT(11) AUTO_INCREMENT PRIMARY KEY,
  RSS_ID               INT(11) NOT NULL,
  RSE_DATE             DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  RSE_TYPE             ENUM('ALIMENTATION','SANTE','COMPORTEMENT',
                           'TRAITEMENT','VETERINAIRE','AUTRE') NOT NULL,
  RSE_DESCRIPTION      TEXT NOT NULL,
  RSE_GRAVITE          ENUM('FAIBLE','MODEREE','ELEVEE','URGENCE'),
  RSE_AUTEUR           VARCHAR(100),
  FOREIGN KEY (RSS_ID) REFERENCES registre_sanitaire_sejour(RSS_ID)
    ON DELETE CASCADE,
  INDEX idx_rse_sejour (RSS_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
🔌

Routes API

MéthodeRouteDescriptionAuth
GET /api/registre-sanitaire Liste paginée des séjours avec jointures animal + tiers + race Requis
GET /api/registre-sanitaire/:id Détail complet d'un séjour + journal d'événements Requis
POST /api/registre-sanitaire Créer un nouveau séjour (entrée animal) Requis
PUT /api/registre-sanitaire/:id Mettre à jour un séjour / clôturer (sortie animal) Requis
POST /api/registre-sanitaire/:id/evenement Ajouter un événement au journal du séjour Requis

Paramètres de filtrage — GET /registre-sanitaire

ParamètreTypeValeurs
?statut=stringEN_COURS | CLOTURE | INCIDENT
?metier=stringPENSION | PET_SITTER | EQUESTRE
?ani_id=integerFiltrer par animal
?search=stringRecherche sur nom animal / propriétaire
?date_from=dateFiltrer par date d'entrée ≥
?date_to=dateFiltrer par date d'entrée ≤
🔄

Cycle de vie d'un séjour

📥 Création entrée animal
🟢 EN_COURS
🟠 INCIDENT (optionnel)
🔘 CLOTURE sortie animal
🟢
EN_COURS
Séjour actif. L'animal est présent dans l'établissement. Le journal d'événements peut être alimenté à tout moment.
🟠
INCIDENT
Un événement de gravité ÉLEVÉE ou URGENCE a été enregistré. Le statut passe automatiquement à INCIDENT et déclenche une notification.
🔘
CLOTURE
L'animal a quitté l'établissement. La date de sortie réelle est enregistrée. Le registre est archivé et en lecture seule. Conservation 5 ans garantie.
⚠️
Séjour clôturé = lecture seule : Une fois l'état CLOTURE atteint, aucune modification des données du séjour n'est possible (sauf ajout d'événement post-clôture avec mention explicite). Cette règle garantit l'intégrité du registre réglementaire.
🖥️

Interface utilisateur

Le composant RegistreSanitairePage.tsx est partagé entre les deux métiers actifs. Il accepte un paramètre metier pour adapter le filtrage.

🏡
/app/pension/registre
Page registre pour le métier Pension / Chenil. Filtre automatique sur RSS_METIER = 'PENSION'.
🏠
/app/pet-sitter/registre
Page registre pour le métier Pet-Sitter. Filtre automatique sur RSS_METIER = 'PET_SITTER'.

Fonctionnalités de l'interface

  • 📋
    Liste des séjours — tableau paginé avec filtre par statut, recherche full-text, tri par date d'entrée. Indicateur visuel rouge pour les séjours INCIDENT.
  • 📄
    Panneau latéral détail — ouverture au clic d'une ligne, affichage complet du séjour sans changement de page. Bouton de clôture et d'ajout d'événement.
  • Formulaire de création — autocomplete sur les animaux existants, pré-remplissage du propriétaire depuis la fiche client, validation des champs obligatoires.
  • 📅
    Journal chronologique — fil d'actualité des événements avec code couleur par gravité. Filtrable par type d'événement.
  • 🖨️
    Export PDF officiel — génération Puppeteer d'un registre imprimable conforme DDPP, avec en-tête établissement et signature.
  • 🔔
    Alertes automatiques — notification interne si vaccin antirabique expiré à l'entrée ou si événement URGENCE enregistré.
📓

Journal d'événements

Le journal est le cœur du suivi sanitaire quotidien. Chaque événement est horodaté, typé et peut recevoir un indice de gravité.

TypeCas d'usage typiquesGravité suggérée
ALIMENTATIONRefus de manger, quantité consommée, vomissement post-repasFAIBLE → MODÉRÉE
SANTEBlessure, boiterie, écoulement oculaire, problème respiratoireMODÉRÉE → URGENCE
COMPORTEMENTAgitation, agressivité, prostration, vocalises inhabituellesFAIBLE → ÉLEVÉE
TRAITEMENTAdministration d'un médicament prescrit, heure et doseFAIBLE
VETERINAIREAppel au vétérinaire, transport en clinique, diagnostic reçuÉLEVÉE → URGENCE
AUTREVisite du propriétaire, sortie exceptionnelle, observation généraleFAIBLE
💡
En cas d'événement de gravité URGENCE, Anim'Gest génère automatiquement une notification interne et marque le séjour en statut INCIDENT. Le propriétaire et le contact d'urgence peuvent être alertés par email si la configuration SMTP est active.

Règles métier

  • 🔒
    Immutabilité post-clôture : Un séjour clôturé ne peut plus être modifié. Le registre archivé est en lecture seule. Seul un événement post-clôture explicitement daté peut être ajouté.
  • 🐾
    Animal identifié obligatoire : Un séjour ne peut être créé que pour un animal référencé dans la base (table animal avec ANI_PUCE ou ANI_TATOUAGE renseigné de préférence).
  • 📅
    Conservation 5 ans : Aucune suppression de séjour cloturé avant l'expiration de 5 ans depuis la date de clôture. La suppression est désactivée en UI pour les séjours archivés.
  • 🐕
    Vaccination antirabique : Si RSS_VACCIN_RAGE est renseigné et antérieur à la date du jour, un avertissement s'affiche à l'enregistrement mais ne bloque pas la création (responsabilité professionnelle).
  • Autorisation de soins : Le champ RSS_AUTORISATION_SOINS doit être explicitement coché par l'utilisateur. Il n'a pas de valeur par défaut à true pour éviter tout accord implicite.
  • 🔗
    Lien avec la fiche animal : La création d'un séjour pré-remplit automatiquement le vétérinaire habituel depuis la fiche animal si les champs ANI_VETO_NOM / ANI_VETO_TEL sont renseignés.
  • 📊
    Indépendance d'Eliot : Le registre sanitaire fonctionne intégralement sans Eliot. C'est une fonctionnalité réglementaire de base, non une option IA.
  • 🏷️
    Cloisonnement par métier : Chaque métier ne voit que ses propres séjours (RSS_METIER filter). Un établissement multi-activités (pension + pet-sitter) accède aux deux registres depuis leurs menus respectifs.
🤖

Intégration Eliot (futur)

🔮
L'intégration Eliot pour le registre sanitaire est planifiée en S67+. Les outils ci-dessous sont spécifiés mais pas encore implémentés.
Tool EliotDescriptionStatut
get_registre_sanitaireLire la liste des séjours en cours avec alertes sanitairesPlanifié S67
create_evenement_sanitaireAjouter un événement au journal depuis Eliot en mode vocalPlanifié S67
get_alertes_vaccinsSignaler les animaux avec vaccinations expirées ou à renouvelerPlanifié S68
Rappel : Eliot est une option commerciale. Toutes les fonctionnalités du registre sanitaire sont accessibles et pleinement opérationnelles sans Eliot. L'IA vient en complément, jamais en prérequis.