Cadre légal
L'arrêté du 3 avril 2014 impose à tout établissement accueillant des animaux de compagnie en pension (chenil, chatterie, garde temporaire, pet-sitting avec hébergement) la tenue d'un registre sanitaire traçant l'ensemble des informations relatives à la santé de chaque animal accueilli.
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).
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).
Données enregistrées
Informations du séjour — obligatoires
| Champ | Type | Réq. | Description |
|---|---|---|---|
| ANI_ID | INT FK | ✦ | Référence animal (table animal) |
| TIE_ID | INT FK | ✦ | Référence propriétaire (table tiers) |
| RSS_DATE_ENTREE | DATETIME | ✦ | Date et heure d'entrée dans l'établissement |
| RSS_DATE_SORTIE | DATETIME | ○ | Date et heure de sortie prévue (modifiable) |
| RSS_DATE_SORTIE_REELLE | DATETIME | ○ | Date et heure de sortie effective (à la clôture) |
| RSS_STATUT | ENUM | ✦ | EN_COURS / CLOTURE / INCIDENT |
| RSS_ETAT_ENTREE | TEXT | ✦ | Observation état physique et comportemental à l'entrée |
| RSS_ETAT_SORTIE | TEXT | ○ | Observation état à la sortie / clôture |
| RSS_VACCIN_RAGE | DATE | ○ | Date de validité du vaccin antirabique |
| RSS_VACCIN_AUTRE | VARCHAR | ○ | Autres vaccinations (DHPP, typhus, leucose…) |
| RSS_TRAITEMENT | TEXT | ○ | Traitement médical en cours : médicament + posologie |
| RSS_ALIMENTATION | TEXT | ○ | Type, marque, quantité, fréquence, allergies |
| RSS_VETO_NOM | VARCHAR | ✦ | Nom du vétérinaire habituel |
| RSS_VETO_TEL | VARCHAR | ✦ | Téléphone de la clinique vétérinaire |
| RSS_URGENCE_NOM | VARCHAR | ✦ | Nom du contact d'urgence (si propriétaire absent) |
| RSS_URGENCE_TEL | VARCHAR | ✦ | Téléphone du contact d'urgence |
| RSS_AUTORISATION_SOINS | BOOLEAN | ✦ | Autorisation du propriétaire pour soins vétérinaires d'urgence |
| RSS_METIER | VARCHAR | ✦ | Métier créateur : PENSION / PET_SITTER / EQUESTRE |
| RSS_NOTES | TEXT | ○ | Notes libres complémentaires |
Journal d'événements — table registre_sanitaire_evenement
| Champ | Type | Réq. | Description |
|---|---|---|---|
| RSE_ID | INT PK | ✦ | Identifiant unique |
| RSS_ID | INT FK | ✦ | Référence séjour |
| RSE_DATE | DATETIME | ✦ | Date et heure de l'événement |
| RSE_TYPE | ENUM | ✦ | ALIMENTATION / SANTE / COMPORTEMENT / TRAITEMENT / VETERINAIRE / AUTRE |
| RSE_DESCRIPTION | TEXT | ✦ | Description de l'événement |
| RSE_GRAVITE | ENUM | ○ | FAIBLE / MODEREE / ELEVEE / URGENCE |
| RSE_AUTEUR | VARCHAR | ○ | Nom de l'employé ayant enregistré l'événement |
Structure BDD
-- 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éthode | Route | Description | Auth |
|---|---|---|---|
| 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ètre | Type | Valeurs |
|---|---|---|
| ?statut= | string | EN_COURS | CLOTURE | INCIDENT |
| ?metier= | string | PENSION | PET_SITTER | EQUESTRE |
| ?ani_id= | integer | Filtrer par animal |
| ?search= | string | Recherche sur nom animal / propriétaire |
| ?date_from= | date | Filtrer par date d'entrée ≥ |
| ?date_to= | date | Filtrer par date d'entrée ≤ |
Cycle de vie d'un séjour
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/registreRSS_METIER = 'PENSION'./app/pet-sitter/registreRSS_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é.
| Type | Cas d'usage typiques | Gravité suggérée |
|---|---|---|
| ALIMENTATION | Refus de manger, quantité consommée, vomissement post-repas | FAIBLE → MODÉRÉE |
| SANTE | Blessure, boiterie, écoulement oculaire, problème respiratoire | MODÉRÉE → URGENCE |
| COMPORTEMENT | Agitation, agressivité, prostration, vocalises inhabituelles | FAIBLE → ÉLEVÉE |
| TRAITEMENT | Administration d'un médicament prescrit, heure et dose | FAIBLE |
| VETERINAIRE | Appel au vétérinaire, transport en clinique, diagnostic reçu | ÉLEVÉE → URGENCE |
| AUTRE | Visite du propriétaire, sortie exceptionnelle, observation générale | FAIBLE |
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
animalavec 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_RAGEest 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_SOINSdoit être explicitement coché par l'utilisateur. Il n'a pas de valeur par défaut àtruepour é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_TELsont 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_METIERfilter). Un établissement multi-activités (pension + pet-sitter) accède aux deux registres depuis leurs menus respectifs.
Intégration Eliot (futur)
| Tool Eliot | Description | Statut |
|---|---|---|
| get_registre_sanitaire | Lire la liste des séjours en cours avec alertes sanitaires | Planifié S67 |
| create_evenement_sanitaire | Ajouter un événement au journal depuis Eliot en mode vocal | Planifié S67 |
| get_alertes_vaccins | Signaler les animaux avec vaccinations expirées ou à renouveler | Planifié S68 |