Écran 1 — Tableau de bord / Accueil (déjà fait)
où ça se branche dans Odoo Online, et quels modèles créer avec Odoo Studio
pour alimenter l’écran “Dossier patient / Fiche senior”.
Je vous le fais en 3 parties :
- Modules Odoo Online à interconnecter
- Modèles Synergia Senior à créer avec Odoo Studio
- Mapping direct ↔ éléments de l’écran “Fiche senior”
1️⃣ Modules Odoo Online à interconnecter
| Module Odoo classique | Rôle dans Synergia Senior | Ce qu’on y stocke / réutilise |
|---|---|---|
| Contacts (res.partner) | Cœur de tout | Seniors, aidants, infirmiers, médecins, pharmaciens, structures. Adresses, téléphone, email, géolocalisation (pour la carte OSM). |
| Calendrier | Planification des visites | Événements de visite (option : synchroniser avec modèle “Visite infirmier”). |
| Documents | Stockage des PDFs & images | Ordonnances, comptes rendus, photos de plaies, documents hospitaliers, etc. |
| Notes ou Projet/Tâches | Tâches administratives | To-do IA : BSI à finir, transmissions à envoyer, renouvellements, rappels. |
| Discussion (mail/messages) | Historique des transmissions | Log des messages envoyés au médecin/pharmacie/aidant (via N8N). |
| (Option) Field Service / Helpdesk | Si vous formalisez les visites comme “interventions” | Visites planifiées avec suivi d’état (à faire / fait / facturé). |
Idée : créer une “App” Synergia Senior dans Odoo Studio qui contient les nouveaux modèles, mais s’appuie sur Contacts / Calendrier / Documents.
2️⃣ Modèles à créer via Odoo Studio (côté Synergia Senior)
Je vous propose une structure simple, compatible Odoo Online.
2.1. Modèle principal : Dossier Senior
| Élément | Proposition |
|---|---|
| Nom technique | x_synergia_senior_dossier |
| Type | Modèle principal (nouvel objet) |
| Champs principaux | |
| name (Char) | Nom du dossier (reprend le nom du senior) |
| senior_id (Many2one → res.partner) | Contact du senior (domaine : tag “Senior”) |
| aidant_principal_id (Many2one → res.partner) | Contact aidant principal |
| team_ids (Many2many → res.partner) | Équipe de soin (infirmiers, médecins, pharmaciens, aide à dom) |
| risk_score (Float / Integer) | Score de fragilité / priorité IA |
| notes_generales (Text) | Notes générales sur la situation |
C’est ce modèle qui sera ouvert quand on clique sur “Fiche patient / Dossier senior”.
2.2. Modèle : Profil médical / Contexte
| Élément | Proposition |
|---|---|
| Nom technique | x_synergia_medical_profile |
| Relation | Many2one vers x_synergia_senior_dossier |
| Champs | |
| dossier_id (Many2one) | Lien vers le dossier senior |
| pathologies (Text ou Many2many vers table de référence) | Liste des pathologies (ex : insuffisance cardiaque, HTA…) |
| traitements (Text) | Traitements en cours (texte libre au début) |
| allergies (Text) | Allergies majeures |
| commentaire_medical (Text) | Commentaires libres (médecin ou infirmier) |
Simple pour démarrer, sans rentrer dans un vrai dossier médical hospitalier.
2.3. Modèle : Visites infirmières
| Élément | Proposition |
|---|---|
| Nom technique | x_synergia_visit |
| Relation | One2many depuis le dossier senior |
| Champs | |
| dossier_id (Many2one → x_synergia_senior_dossier) | Senior concerné |
| infirmier_id (Many2one → res.partner ou res.users) | Soignant qui a fait la visite |
| date_visit (Datetime) | Date et heure de la visite |
| type_visit (Selection) | ('soin', 'pansement', 'suivi_chronique', 'post_op', 'bsi', 'autre') |
| note_brute (Text) | Note brute dictée / saisie |
| resume_ia (Text) | Résumé généré par l’IA pour “Historique des visites” |
| tag_visite (Selection) | ex : ('bsi','transmission_medecin','soin','controle') pour les badges dans la liste |
| transmission_id (Many2one → x_synergia_transmission) | Lien s’il y a eu un message généré |
| documents_ids (Many2many → ir.attachment) | Photos ou pièces jointes associées à la visite |
2.4. Modèle : Transmissions (IA → médecin / pharmacie / aidant)
| Élément | Proposition |
|---|---|
| Nom technique | x_synergia_transmission |
| Champs | |
| dossier_id (Many2one) | Lien vers le senior |
| to_partner_id (Many2one → res.partner) | Destinataire (médecin, pharmacie, aidant) |
| channel (Selection) | ('email','sms','portail','autre') |
| subject (Char) | Objet |
| body (Text) | Corps de la transmission (généré par l’IA, modifiable) |
| status (Selection) | ('draft','sent','failed') |
| date_sent (Datetime) | Date d’envoi (renseignée par N8N) |
| origin_visit_id (Many2one → x_synergia_visit) | Visite liée |
2.5. Modèle : Mesures capteurs & constantes vitales
| Élément | Proposition |
|---|---|
| Nom technique | x_synergia_sensor_measure |
| Champs | |
| dossier_id (Many2one → x_synergia_senior_dossier) | Dossier senior concerné |
| measure_type (Selection) | ('ta','poids','sommeil','frequence_cardiaque','activite','autre') |
| value_numeric (Float) | Valeur principale (ex : 120, 66.1…) |
| unit (Char) | ex : mmHg, kg, h, pas |
| measured_at (Datetime) | Date/heure de la mesure |
| source (Selection ou Char) | ('withings','mmwave','manuel','autre') |
| raw_payload (Text) | JSON brut remonté par N8N (pour audit/debug) |
Cela permet d’afficher dans la colonne droite : TA / Poids / Sommeil (3 dernières valeurs) avec date.
2.6. Modèle : Alertes / Signaux faibles (pour plus tard mais utile)
| Élément | Proposition |
|---|---|
| Nom technique | x_synergia_alert |
| Champs | |
| dossier_id (Many2one) | Senior concerné |
| alert_type (Selection) | ('capteur','medication','organisation','autre') |
| severity (Selection) | ('low','medium','high') |
| message (Text) | Description lisible |
| source (Char) | Règle IA / N8N qui a généré l’alerte |
| is_resolved (Boolean) | A été traité ou pas |
| resolved_by_id (Many2one → res.users) | Qui a traité |
| resolved_note (Text) | Commentaire de résolution |
Ces alertes seront vues surtout dans Écran 8, mais on peut en remonter une synthèse dans la fiche patient.
3️⃣ Mapping direct avec l’écran “Fiche senior”
Je vous fais un tableau “Élément d’écran → Objet / champ Odoo”.
| Élément visuel de la Fiche Senior | Où est-ce stocké ? |
|---|---|
| Nom du senior, âge, adresse | res.partner (champ name, street, zip, city, birthdate_date pour calcul de l’âge) |
| Contact aidant | x_synergia_senior_dossier.aidant_principal_id (Many2one → res.partner) |
| Contexte médical (pathologies, traitements, allergies) | x_synergia_medical_profile.pathologies, .traitements, .allergies liés à dossier_id |
| Historique des visites (liste datée + badge “SOINS / BSI / TRANSMISSION MÉDECIN”) | x_synergia_visit filtré sur dossier_id (tree view) + champs date_visit, resume_ia, tag_visite |
| Bouton “Transmission médecin” ou tag | Lien vers x_synergia_transmission (smart button / Many2one) |
| Bloc “Documents” (ordonnance, compte rendu hospi) | ir.attachment liés soit au res.partner du senior soit au x_synergia_senior_dossier (via modèle Documents) |
| Bloc “Copilote IA” (panel droite) | Pas stocké dans Odoo → c’est votre viewer JS + API IA ; on peut juste prévoir un champ x_last_ia_note sur x_synergia_visit ou x_synergia_transmission si vous voulez archiver. |
| Bloc “Capteurs & constantes” | x_synergia_sensor_measure (3 dernières lignes par measure_type pour ce dossier_id) |
| Score de risque / priorité (facultatif) | x_synergia_senior_dossier.risk_score mis à jour via N8N / IA |
4️⃣ Mini-checklist pour Odoo Studio (concret)
4️⃣ Mini-checklist pour Odoo Studio (concret)
- Créer une nouvelle App “Synergia Senior”.
- Dans cette app, créer les modèles ci-dessus (au moins : x_synergia_senior_dossier, x_synergia_visit, x_synergia_sensor_measure, x_synergia_transmission, x_synergia_medical_profile).
- Ajouter un smart button “Dossier Senior” sur les contacts (res.partner) tagués “Senior”, qui ouvre x_synergia_senior_dossier associé.
-
Configurer les vues form & tree pour que la “Fiche senior” ressemble au mockup :
- en haut : bloc identité (via senior_id → champs liés),
- zone “Contexte médical” (page ou onglet),
- One2many “Historique des visites”,
- One2many “Documents” (via Documents),
- One2many “Mesures capteurs” (en widget “statistiques” ou simple liste).
-
Connecter N8N pour créer automatiquement :
- des enregistrements dans x_synergia_sensor_measure,
- des enregistrements dans x_synergia_visit (avec resume_ia),
- des enregistrements dans x_synergia_transmission.