5.5. Module E — Transmissions & Comptes rendus
5.5. Module E — Transmissions & Comptes rendus

Parfait. Je vais maintenant produire la formalisation Odoo / Odoo Studio complète pour le module correspondant à l’image HD que vous avez demandée :
📘 Module E — Transmissions & Comptes rendus
(messages structurés, comptes rendus IA, envoi médecin/pharmacie/aide à domicile, suivi statut)
Comme pour les modules précédents, je vous fournis :
✔ Les modèles Odoo Online utilisés
✔ Les modèles à créer dans Odoo Studio
✔ Tous les champs (nom technique, type, rôle, obligatoire ou non)
✔ Architecture relationnelle et liens avec Visite / Copilote IA
✔ Spécifications prêtes pour l’équipe Madagascar
🟦 1. Modules Odoo Online classiques utilisés
| Module | Modèle | Rôle |
|---|---|---|
| Contacts | res.partner | Destinataires : médecins, pharmacie, aidants |
| Mail/Discuss | mail.message (optionnel) | Si vous voulez journaliser les transmissions réelles |
| Documents | ir.attachment | Pour pièces jointes de transmissions |
| Synergia Senior | x_synergia_senior_dossier | Associer transmission ↔ patient |
| Synergia Visite | x_synergia_visit | Lier transmission à une visite |
🟦 2. Modèle principal Studio : x_synergia_transmission
Ce modèle représente tout message structuré, généré par l’IA ou rédigé par l’infirmier, destiné à un médecin, une pharmacie, un aidant, etc.
Il correspond à l’écran :
➡️ Transmissions → avec statut (brouillon / envoyé / confirmé / échec)
🔵 Champs obligatoires
dossier_id
- Type : Many2one → x_synergia_senior_dossier
- Rôle : rattache la transmission au patient senior.
subject
- Type : Char
- Exemple : “Transmission médicale — aggravation escarre”
- Rôle : Titre visible dans la liste et sur la Fiche Senior.
body
- Type : Text
- Contenu de la transmission (version propre, formatée).
- Peut être généré par l’IA (Copilote).
date_creation
- Type : Datetime
- Valeur par défaut : now()
- Rôle : horodatage.
🔵 Champs fonctionnels (destinataires)
to_partner_id
- Type : Many2one → res.partner
- Rôle : destinataire principal (médecin traitant, pharmacie…).
cc_partner_ids
- Type : Many2many → res.partner
- Rôle : destinataires copie (famille, aidants, infirmiers en équipe).
channel
- Type : Selection
-
Valeurs :
- sms
- odoo_message
- Rôle : canal d’envoi.
🔵 Champs IA (provenance du Copilote IA)
origin_ai_message_id
- Type : Many2one → x_synergia_ai_message
- Rôle : relie la transmission à la réponse IA qui l’a générée.
generation_method
- Type : Selection
- Valeurs : manual, ai, mixed
- Rôle : traçabilité.
🔵 Champs de statut d’envoi
status
- Type : Selection
-
Valeurs :
- draft → brouillon
- sent → envoyé
- confirmed → médecin a répondu
- failed → échec envoi
- Rôle : suivi du workflow.
date_sent
- Type : Datetime
- Rôle : date d’envoi réel.
error_message
- Type : Text
- Rôle : diagnostic en cas d’échec d’envoi.
🟦 3. Modèle relationnel “Visite → Transmission”
| Relation | Description |
|---|---|
| x_synergia_visit.transmission_id | Une visite peut déclencher une transmission |
| x_synergia_transmission.origin_visit_id | Permet de revenir à la visite d'origine |
Champs Studio à ajouter :
origin_visit_id
- Type : Many2one → x_synergia_visit
- Rôle : contextuel (“suite à la visite du 13/11, aggravation escarre”).
🟦 4. Gestion des pièces jointes (Documents Odoo)
attachment_ids
- Type : Many2many → ir.attachment
-
Rôle :
- photos envoyées au médecin
- fichiers générés par l’IA
- comptes rendus PDF
🟦 5. Actions depuis l’interface Copilote IA
Les boutons :
- Créer transmission
- Créer tâche
- Ajouter au dossier
- Envoyer à N8N
→ se traduisent par de la création Odoo via N8N ou backend API REST.
Liens nécessaires :
task_id
- Type : Many2one → project.task
- Rôle : tâche créé automatiquement par le Copilote.
note_id
- Type : Many2one → mail.message ou modèle interne x_synergia_note
- Rôle : consulter la note ajoutée au dossier.
🟦 6. Vue Liste Odoo à créer (“Transmissions & Comptes rendus”)
Colonnes recommandées :
- dossier_id.senior_id.name
- subject
- channel
- to_partner_id
- status (badge)
- date_sent
Filtres recommandés :
-
À envoyer
- [('status','=','draft')]
-
Échec d’envoi
- [('status','=','failed')]
-
Envoyées à médecin
- [('to_partner_id.category_id','=','médecin')]
-
Transmissions IA
- [('generation_method','=','ai')]
🟦 7. Résumé complet des modèles & champs à créer
📌 Dans Odoo Studio, créer le modèle x_synergia_transmission
Champs obligatoires :
- dossier_id (Many2one)
- subject (Char)
- body (Text)
- date_creation (Datetime)
Champs destinataires :
- to_partner_id (Many2one)
- cc_partner_ids (Many2many)
- channel (Selection)
Champs IA :
- origin_ai_message_id (Many2one)
- generation_method (Selection)
Champs workflow :
- status (Selection)
- date_sent (Datetime)
- error_message (Text)
Champs relationnels :
- origin_visit_id (Many2one)
- attachment_ids (Many2many)
- task_id (Many2one)
- note_id (Many2one)
🟦 8. Version “spécification développeur” (format synoptique)
x_synergia_transmission - dossier_id (M2O → dossier senior) - origin_visit_id (M2O → visite) - subject (char) - body (text) - to_partner_id (M2O → partner) - cc_partner_ids (M2M → partners) - channel (selection) - status (selection: draft/sent/confirmed/failed) - attachment_ids (M2M → ir.attachment) - date_creation (datetime) - date_sent (datetime) - error_message (text) - origin_ai_message_id (M2O → ai_message) - generation_method (selection) - task_id (M2O → project.task) - note_id (M2O → mail.message)
✅ Le tableau de spec final (Modèle / Champ / Type / Obligatoire / Commentaire)
voici le tableau de spec final, au format texte à colonnes, prêt à être copié dans un doc de spec ou envoyé à l’équipe Madagascar.
Je distingue :
- Modèle principal : x_synergia_transmission
- Champs à ajouter sur les autres modèles pour le lier (visite, IA)
1️⃣ Modèle : x_synergia_transmission – Transmissions & Comptes rendus
| Modèle | Champ (technique) | Type Odoo Studio | Obligatoire | Commentaire |
|---|---|---|---|---|
| x_synergia_transmission | dossier_id | Many2one → x_synergia_senior_dossier | ✅ Oui | Dossier Senior concerné par la transmission. Permet de l’afficher dans la Fiche Senior. |
| x_synergia_transmission | origin_visit_id | Many2one → x_synergia_visit | Non | Visite dont est issue la transmission (si déclenchée après une visite). |
| x_synergia_transmission | subject | Char | ✅ Oui | Titre de la transmission. Ex : “Transmission médecin – douleur thoracique”. Affiché en liste. |
| x_synergia_transmission | body | Text | ✅ Oui | Corps du message structuré (généré par IA ou rédigé par l’infirmier). |
| x_synergia_transmission | date_creation | Datetime | ✅ Oui | Date/heure de création (par défaut : now). Sert à classer les transmissions. |
| x_synergia_transmission | to_partner_id | Many2one → res.partner | ✅ Oui (en pratique) | Destinataire principal : médecin, pharmacie, aidant, etc. |
| x_synergia_transmission | cc_partner_ids | Many2many → res.partner | Non | Destinataires en copie (famille, équipe de soins, autres infirmiers…). |
| x_synergia_transmission | channel | Selection | ✅ Oui | Canal d’envoi : ex : sms, email, whatsapp, odoo_message. Sert à router via N8N. |
| x_synergia_transmission | status | Selection | ✅ Oui | État de la transmission : draft, sent, confirmed, failed. Permet de filtrer “à envoyer / en erreur…”. |
| x_synergia_transmission | date_sent | Datetime | Non | Date/heure d’envoi réel (rempli par N8N / backend). |
| x_synergia_transmission | error_message | Text | Non | Détail du dernier échec d’envoi (si status = failed). Utile pour support. |
| x_synergia_transmission | attachment_ids | Many2many → ir.attachment | Non | Pièces jointes (photos, PDF, comptes rendus générés, docs hôpital…). |
| x_synergia_transmission | origin_ai_message_id | Many2one → x_synergia_ai_message | Non | Message IA (Copilote) qui a servi de base à cette transmission. Traçabilité IA. |
| x_synergia_transmission | generation_method | Selection | Non | Mode de génération : manual, ai, mixed. Permet de distinguer transmissions écrites à la main vs IA. |
| x_synergia_transmission | task_id | Many2one → project.task (ou x_synergia_task) | Non | Tâche créée à partir de cette transmission (ex : suivi, rappel). |
| x_synergia_transmission | note_id | Many2one → mail.message ou x_synergia_note | Non | Note interne ajoutée au dossier à partir de ce contenu. |
| x_synergia_transmission | x_source | Char ou Selection | Non | Source technique : webapp_synergia, odoo_backoffice, etc. Utile pour analyse. |
2️⃣ Champs à ajouter sur les autres modèles pour la liaison
2.1. Sur x_synergia_visit (Visite infirmière)
| Modèle | Champ (technique) | Type | Obligatoire | Commentaire |
|---|---|---|---|---|
| x_synergia_visit | transmission_id | Many2one → x_synergia_transmission | Non | Transmission principale créée à partir de cette visite (si applicable). Permet bouton “Voir transmission associée” depuis l’historique des visites. |
2.2. Sur x_synergia_ai_message (Message du Copilote IA)
| Modèle | Champ (technique) | Type | Obligatoire | Commentaire |
|---|---|---|---|---|
| x_synergia_ai_message | transmission_id | Many2one → x_synergia_transmission | Non | Lien vers la transmission créée à partir de cette réponse IA (bouton “Créer transmission”). Permet de tracer quelles réponses IA ont déclenché des actions. |
| x_synergia_ai_message | action_type | Selection | Non | none, transmission, task, note, n8n. Permet de savoir quelle action a été prise sur ce message IA. |
| x_synergia_ai_message | is_action_generated | Boolean | Non | True si au moins une action (transmission / tâche / note) a été générée depuis ce message. |
3️⃣ Récap rapide pour l’équipe Odoo Studio
À créer dans Odoo Studio :
Modèle : x_synergia_transmission
- dossier_id – M2O → x_synergia_senior_dossier (obligatoire)
- origin_visit_id – M2O → x_synergia_visit
- subject – Char (obligatoire)
- body – Text (obligatoire)
- date_creation – Datetime (obligatoire, valeur par défaut = now)
- to_partner_id – M2O → res.partner (obligatoire en pratique)
- cc_partner_ids – M2M → res.partner
- channel – Selection (obligatoire)
- status – Selection (obligatoire)
- date_sent – Datetime
- error_message – Text
- attachment_ids – M2M → ir.attachment
- origin_ai_message_id – M2O → x_synergia_ai_message
- generation_method – Selection
- task_id – M2O → project.task ou x_synergia_task
- note_id – M2O → mail.message ou x_synergia_note
- x_source – Char / Selection
À ajouter dans des modèles existants :
-
Sur x_synergia_visit :
- transmission_id – M2O → x_synergia_transmission
-
Sur x_synergia_ai_message :
- transmission_id – M2O → x_synergia_transmission
- action_type – Selection
- is_action_generated – Boolean
vue Liste & Formulaire Odoo à recommander pour x_synergia_transmission (colonnes, filtres, smart buttons).
Parfait, on va designer ça comme un vrai cahier des charges Odoo pour x_synergia_transmission :
- 1️⃣ Vue Liste : colonnes, filtres, tris, recherche
- 2️⃣ Vue Formulaire : layout (header + onglets), champs
- 3️⃣ Smart buttons à prévoir (dans la fiche)
1️⃣ Vue LISTE – x_synergia_transmission
Nom suggéré : “Transmissions & comptes rendus”
Modèle : x_synergia_transmission
🔹 Colonnes recommandées
Ordre logique, lisible par un infirmier ou un coordinateur :
-
Patient
- Champ : dossier_id.senior_id.name
- Label : “Patient”
- Rôle : identifie immédiatement à qui la transmission se rapporte.
-
Objet
- Champ : subject
- Label : “Objet”
- Rôle : description courte de la transmission.
-
Destinataire
- Champ : to_partner_id.name
- Label : “Destinataire”
- Rôle : médecin, pharmacie, aidant.
-
Canal
- Champ : channel
- Label : “Canal”
- Widget : étiquette / badge (ex : email / SMS / WhatsApp).
-
Statut
- Champ : status
- Label : “Statut”
-
Widget : badge coloré
- draft → Brouillon
- sent → Envoyé
- confirmed → Confirmé / Réponse reçue
- failed → Échec
-
Date d’envoi
- Champ : date_sent (ou date_creation si date_sent vide)
- Label : “Envoyé le”
-
Type de génération (optionnel, intéressant pour l’analyse IA)
- Champ : generation_method
- Label : “Origine”
- Valeurs : “IA” / “Manuel” / “Mixte”
-
Alerte / Erreur (icône) – facultatif
- Champ : error_message (affiché sous forme d’icône si non-null)
- Label : “Erreur”
- Widget : icône rouge avec tooltip survol = texte d’erreur.
🔹 Barre de recherche
Recherche full-text sur :
- subject
- dossier_id.senior_id.name
- to_partner_id.name
Optionnel : index x_search_blob si vous le créez.
🔹 Filtres rapides
Filtres à configurer dans Odoo Studio :
-
Brouillons à valider
[('status', '=', 'draft')]
-
Envoi en échec
[('status', '=', 'failed')]
-
Transmissions IA
[('generation_method', '=', 'ai')]
-
Envoyées (toutes)
[('status', 'in', ['sent', 'confirmed'])]
-
Par patient courant (quand appelé depuis un dossier)
- via contexte ou domaine [('dossier_id','=',active_id)].
🔹 Groupements utiles (Group By)
- Par patient (dossier_id)
- Par destinataire (to_partner_id)
- Par statut (status)
- Par canal (channel)
🔹 Tri par défaut
- 1er tri : date_creation desc
- Secondaire : dossier_id.senior_id.name asc
2️⃣ Vue FORMULAIRE – x_synergia_transmission
Objectif UX :
- En haut : qui / quoi / statut
- Milieu : contenu du message
- Bas / onglets : destinataires, pièces jointes, IA & historique
🔹 Header (bandeau supérieur)
Champs recommandés dans la barre supérieure :
- Subject → subject (titre principal, en gros)
-
À droite du titre :
- Statut → status (badge)
- Canal → channel (petit badge)
- Date d’envoi → date_sent (ou date_creation si brouillon)
Juste en dessous :
- Patient → dossier_id.senior_id.name
- Destinataire principal → to_partner_id
- Origine (IA / Manuel) → generation_method
🔹 Onglet 1 – “Contenu” (par défaut)
-
Bloc “Transmission”
- Champ : body (Text Multi-ligne)
- Label : “Contenu de la transmission”
- Ce champ doit être confortable pour lecture + édition manuelle.
-
Bloc “Pièces jointes”
- Champ : attachment_ids (Many2many → ir.attachment)
- Widget : pièces jointes Odoo (comme dans Notes / Emails).
🔹 Onglet 2 – “Destinataires”
-
Destinataire principal
- to_partner_id
-
En copie
- cc_partner_ids (liste / tags)
Option : afficher les coordonnées de contact du destinataire (tel, email).
🔹 Onglet 3 – “Suivi & statut”
Champs :
- status (Selection)
- date_creation (Datetime)
- date_sent (Datetime)
- error_message (Text)
- x_source (Char / Selection : webapp / Odoo / API)
Affichage type “journal” :
- Date de création
- Date d’envoi
- Dernier statut / dernier message d’erreur
🔹 Onglet 4 – “IA & contexte” (optionnel mais très utile)
Champs :
- generation_method
- origin_ai_message_id (Many2one, lien vers message IA)
- origin_visit_id (Many2one, lien vers visite)
On peut y afficher :
- un lien “Voir conversation IA”
- un lien “Voir visite d’origine”
3️⃣ Smart Buttons recommandés (en haut du formulaire)
Sur la fiche x_synergia_transmission, dans la barre d’entête, je recommande :
🔸 Smart button “Dossier patient”
- Lié à : dossier_id
- Action : ouvrir la Fiche Senior (x_synergia_senior_dossier form view).
- Label : “Dossier patient”
- Utile : revenir immédiatement au contexte global du patient.
🔸 Smart button “Visite liée” (si origin_visit_id défini)
- Lié à : origin_visit_id
- Label : “Visite d’origine”
- Action : ouvrir la fiche de la visite.
- Utile : recontextualiser la transmission par rapport à ce qui a été vu sur le terrain.
🔸 Smart button “IA (Copilote)” (si origin_ai_message_id défini)
- Lié à : origin_ai_message_id
- Label : “Réponse IA” ou “Copilote IA”
- Action : ouvrir la fiche message ou la session IA.
- Utile : audit : voir ce que l’IA avait répondu.
🔸 Smart button “Tâche liée” (si task_id défini)
- Lié à : task_id
- Label : “Tâche”
- Action : ouvrir la tâche (suivi de traitement de la transmission).
🔸 Smart button “Note dossier” (si note_id défini)
- Lié à : note_id
- Label : “Note dossier”
- Action : ouvrir la note interne liée.
4️⃣ Résumé opérationnel pour Odoo Studio
-
Vue liste
- Modèle : x_synergia_transmission
- Nom : “Transmissions & comptes rendus”
- Colonnes : Patient, Objet, Destinataire, Canal, Statut, Date d’envoi, Origine IA/Manuel, (icône Erreur)
- Filtres : draft, failed, generation_method = 'ai', “Envoyées”
- Group By : Patient, Destinataire, Statut, Canal
-
Vue formulaire
- Header : Subject + Statut + Canal + Date + Patient + Destinataire
-
Onglets :
- Contenu : body, attachment_ids
- Destinataires : to_partner_id, cc_partner_ids
- Suivi & statut : status, dates, error_message, x_source
- IA & contexte : generation_method, origin_ai_message_id, origin_visit_id
-
Smart buttons
- Dossier patient (dossier_id)
- Visite liée (origin_visit_id)
- IA / Copilote (origin_ai_message_id)
- Tâche (task_id)
- Note (note_id)