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

ModuleModèleRôle
Contactsres.partnerDestinataires : médecins, pharmacie, aidants
Mail/Discussmail.message (optionnel)Si vous voulez journaliser les transmissions réelles
Documentsir.attachmentPour pièces jointes de transmissions
Synergia Seniorx_synergia_senior_dossierAssocier transmission ↔ patient
Synergia Visitex_synergia_visitLier 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
    • email
    • whatsapp
    • 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”

RelationDescription
x_synergia_visit.transmission_idUne visite peut déclencher une transmission
x_synergia_transmission.origin_visit_idPermet 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 :

  1. Modèle principal : x_synergia_transmission
  2. Champs à ajouter sur les autres modèles pour le lier (visite, IA)

1️⃣ Modèle : x_synergia_transmission – Transmissions & Comptes rendus

ModèleChamp (technique)Type Odoo StudioObligatoireCommentaire
x_synergia_transmissiondossier_idMany2one → x_synergia_senior_dossier✅ OuiDossier Senior concerné par la transmission. Permet de l’afficher dans la Fiche Senior.
x_synergia_transmissionorigin_visit_idMany2one → x_synergia_visitNonVisite dont est issue la transmission (si déclenchée après une visite).
x_synergia_transmissionsubjectChar✅ OuiTitre de la transmission. Ex : “Transmission médecin – douleur thoracique”. Affiché en liste.
x_synergia_transmissionbodyText✅ OuiCorps du message structuré (généré par IA ou rédigé par l’infirmier).
x_synergia_transmissiondate_creationDatetime✅ OuiDate/heure de création (par défaut : now). Sert à classer les transmissions.
x_synergia_transmissionto_partner_idMany2one → res.partner✅ Oui (en pratique)Destinataire principal : médecin, pharmacie, aidant, etc.
x_synergia_transmissioncc_partner_idsMany2many → res.partnerNonDestinataires en copie (famille, équipe de soins, autres infirmiers…).
x_synergia_transmissionchannelSelection✅ OuiCanal d’envoi : ex : sms, email, whatsapp, odoo_message. Sert à router via N8N.
x_synergia_transmissionstatusSelection✅ OuiÉtat de la transmission : draft, sent, confirmed, failed. Permet de filtrer “à envoyer / en erreur…”.
x_synergia_transmissiondate_sentDatetimeNonDate/heure d’envoi réel (rempli par N8N / backend).
x_synergia_transmissionerror_messageTextNonDétail du dernier échec d’envoi (si status = failed). Utile pour support.
x_synergia_transmissionattachment_idsMany2many → ir.attachmentNonPièces jointes (photos, PDF, comptes rendus générés, docs hôpital…).
x_synergia_transmissionorigin_ai_message_idMany2one → x_synergia_ai_messageNonMessage IA (Copilote) qui a servi de base à cette transmission. Traçabilité IA.
x_synergia_transmissiongeneration_methodSelectionNonMode de génération : manual, ai, mixed. Permet de distinguer transmissions écrites à la main vs IA.
x_synergia_transmissiontask_idMany2one → project.task (ou x_synergia_task)NonTâche créée à partir de cette transmission (ex : suivi, rappel).
x_synergia_transmissionnote_idMany2one → mail.message ou x_synergia_noteNonNote interne ajoutée au dossier à partir de ce contenu.
x_synergia_transmissionx_sourceChar ou SelectionNonSource 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èleChamp (technique)TypeObligatoireCommentaire
x_synergia_visittransmission_idMany2one → x_synergia_transmissionNonTransmission 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èleChamp (technique)TypeObligatoireCommentaire
x_synergia_ai_messagetransmission_idMany2one → x_synergia_transmissionNonLien 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_messageaction_typeSelectionNonnone, transmission, task, note, n8n. Permet de savoir quelle action a été prise sur ce message IA.
x_synergia_ai_messageis_action_generatedBooleanNonTrue 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 :

  1. Patient
    • Champ : dossier_id.senior_id.name
    • Label : “Patient”
    • Rôle : identifie immédiatement à qui la transmission se rapporte.
  2. Objet
    • Champ : subject
    • Label : “Objet”
    • Rôle : description courte de la transmission.
  3. Destinataire
    • Champ : to_partner_id.name
    • Label : “Destinataire”
    • Rôle : médecin, pharmacie, aidant.
  4. Canal
    • Champ : channel
    • Label : “Canal”
    • Widget : étiquette / badge (ex : email / SMS / WhatsApp).
  5. Statut
    • Champ : status
    • Label : “Statut”
    • Widget : badge coloré
      • draft → Brouillon
      • sent → Envoyé
      • confirmed → Confirmé / Réponse reçue
      • failed → Échec
  6. Date d’envoi
    • Champ : date_sent (ou date_creation si date_sent vide)
    • Label : “Envoyé le”
  7. Type de génération (optionnel, intéressant pour l’analyse IA)
    • Champ : generation_method
    • Label : “Origine”
    • Valeurs : “IA” / “Manuel” / “Mixte”
  8. 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 :

  1. Brouillons à valider

    [('status', '=', 'draft')]

  2. Envoi en échec

    [('status', '=', 'failed')]

  3. Transmissions IA

    [('generation_method', '=', 'ai')]

  4. Envoyées (toutes)

    [('status', 'in', ['sent', 'confirmed'])]

  5. 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)

  1. Bloc “Transmission”
    • Champ : body (Text Multi-ligne)
    • Label : “Contenu de la transmission”
    • Ce champ doit être confortable pour lecture + édition manuelle.
  2. 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

  1. 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
  2. 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
  3. 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)