Vous êtes sur la page 1sur 13

Projet Odoo

(Gestion d’un cabinet médicale) 

Réalisé par : Bousrhal Mohammed


I. Le modèle conceptuel de données
Le modèle conceptuel de données de gestion d’un cabinet médicale :
Le besoin est le suivant :
1. Le patient prend un rendez-vous qui concerne un médecin.
2. Le médecin examine le patient lors de ma consultation utilisant plusieurs méthodes
de diagnostic et lui crée un dossier médical.
3. Lors de la consultation le médecin découvre de symptômes associes probablement à
des maladies.
4. Le médecin prescrit une ordonnance contenant des médicaments.
5. Le médecin établit une facture que le client paye.
Maintenant on passe à la création du model conceptuel de données et pour s’en faire j’ai
suivi les étapes suivantes :
1. Commençant par le premier point qui est : Le patient prend un rendez-vous qui concerne
un médecin donné :
 On crée L’entité patient avec le ID patient et le nom du patient.
 On crée L’entité médecin avec le ID médecin et le nom du médecin.
 On crée L’entité RDV avec le ID RDV et le nom du RDV. (RDV : Rendez-vous
c’est une entité et pas une association)
 On crée la relation prendre qui représente la relation entre le patient et le
rendez-vous.
 On crée la relation concerner qui représente la relation entre le médecin et le
rendez-vous.
 On crée l’association consultation avec la date de la consultation et comme
associés on aura normalement le médecin et le patient mais comme solution
optimisée on peut associer à la consultation justement au RDV et d’après ce dernier
on peut savoir le médecin et le patient et cette solution dépend des cardinalités donc
après avoir mettre les cardinalités on découvre que le RVD nous amené vers 1 seule
patient (cardinalité (1.1)) et à un unique médecin (cardinalité (1.1)) donc on peut
adopter cette solution comme solution optimisée.
2.Pour le 2eme point qui est : Le médecin examine le patient lors de ma consultation
utilisant plusieurs méthodes de diagnostic et lui crée un dossier médical :

 On crée l’entité diagnostic avec le ID diagnostic et le nom diagnostic.


 On crée un entité fichier pour le dossier qui contient « compte rendu des
analyses, les images... »
 On crée la relation possède entre le patient et le fichier.
3.Pour le 3 elme point qui est : Lors de la consultation le médecin découvre de symptômes
associes probablement à des maladies :

 On crée l’entité maladie avec le ID maladie et le nom maladie.


 On crée l’entité symptôme avec le ID symptôme et le nom symptôme qui vont être
liées à la consultation.
 On crée la relation associer entre l’entité symptôme et maladie.
4.Pour le 4 -ème point qui est : Le médecin prescrit une ordonnance contenant des
médicaments.

 On crée l’entité ordonnance avec ID ordonnance et nom ordonnance.


 On crée l’entité médicament avec ID médicament et nom médicament.
 On crée la relation contenir entre l’entité ordonnance et médicament.
 On crée une relation directe entre consultation et ordonnance.
 On crée une relation directe entre le diagnostic et la consultation.
 On procède à mettre les cardinales en posant la question min et max de chaque
relation.
5.Pour le dernier point qui concerne la facturation :

 On crée un entité facture avec le ID facture et le nom de la facture.

Finalement on obtient le modèle conceptuel ci-dessous :


II. La création de l’application : Cabinet Médical Bousrhal

On a d’abord créé les objets qu’ont déjà des modèles existant sur Odoo,
Nous avons créé l’objet Patient en l’associant le modèle contact.
Notre formulaire est déjà créé, mais seulement dans notre application on doit montrer que
les patients, donc on a ajouté une case à coucher nommée ‘Patient ?’, et on a choisi
‘Basculer’ comme widget.
Nous avons aussi créé un filtre nommé ‘Patient’ pour montrer que les patients, le Domaine
prend comme propriété ‘Patient ?’, si l’enregistrement contient le Patient comme vrai il
s’affichera dans la liste des patients
Nous avons créé l’objet Médecin en l’associant le modèle Employé.

Quand on clique sur Médecin il va nous faire apparaitre tous les employés, donc on a créé un filtre
‘Médecin’.

Le Domaine prend comme propriété Poste occupé, donc si le Poste occupé est ‘Médecin’
comme vrai il s’affichera dans la liste des médecins
Et pour le rendez-vous on l’associé au modèle Calendrier de l’événement.

Pour les participants des rendez-vous ils vont être les patients et les médecins.

On peut paramétrer les options pour savoir combien de fois le patient va venir chez le médecin en
cliquant sur le widget Récurrent.

Pour ajouter les médecins comme participants on a défini le champs ‘many2one’ dans Détails de
l’événements, on choisit Employé comme Propriétés du champ et on a créé un filtre ‘Médecin’.

Le Domaine prend comme propriété Poste occupé, donc on va afficher que les ‘Médecin’ et
les ‘Patients’ dans les participants.
Pour les objets qui n’ont pas des modèles déjà existés sur Odoo, Nous avons les crées à
l’aide des Scripts Python.
Etant donné qu’Odoo est développé principalement en utilisant le langage Python, il est
possible d’utiliser n'importe quel éditeur qui supporte la colorisation syntaxique, comme
IDLE, note++, etc. pour le codage et le test des modules Odoo. 
Dans cet article, nous allons utiliser un éditeur puissant qui est largement utilisé par la
communauté des développeurs Odoo qui est Pycharm.
Nous avons Créé un dossier ‘odoo-addons’ pour les nouveaux modules.
Puis on prend une copie de odoo.conf, et on la copie sur le nouveau dossier pour l’utiliser
par la suite.
Configuration Python interpreter :
log_db_level = warning
log_handler = :INFO
log_level = info
logfile =C:\Users\hp\OneDrive\Desktop\odoo-addons\odoo.log
longpolling_port = 8072
max_cron_threads = 2
osv_memory_age_limit = False
osv_memory_count_limit = False
pg_path = C:\Program Files\Odoo 14.0.20220106\PostgreSQL\bin
pidfile =
proxy_mode = False
reportgz = False
screencasts =
screenshots = C:\Users\hp\OneDrive\Desktop\odoo-addons\Temp\odoo_tests
server_wide_modules = base,web
smtp_password = False
smtp_port = 25
smtp_server = localhost
smtp_ssl = False
smtp_user = False
syslog = False
test_enable = False
test_file =
test_tags = None
transient_age_limit = 1.0
translate_modules = ['all']
unaccent = False
upgrade_path =
without_demo = False
workers = None

L’environnement de développement est bien préparé pour Odoo.

 
Les modèles :

Quatre fichiers sont principalement nécessaires pour créer un nouveau module (les fichiers .py
ou .xml peuvent être exclus en fonction des besoins).

Les quatre principaux fichiers sont,


* __init__.py
* __manifest__.py
* model.py
* view.xml

__init__.py
Dans le fichier __init__.py, nous devons importer tous les fichiers python que nous allons utiliser.
Supposons que nous ayons un fichier python appelé model.py dans notre module. La première chose
que nous devons faire est d'importer model.py dans le fichier __init__.py.

__manifest__.py
Dans le __manifest__.py, nous devons mentionner le nom du module, le nom de l'auteur, la version,
la description, l'entreprise, la catégorie, etc.

model.py
Dans ce fichier, nous devons concevoir un nouveau modèle pour stocker les valeurs de patient par
exemple, que ce soit patient.patient. En créant un nouveau modèle, une table sera générée dans la
base de données.

Dans le modèle, nous devons déclarer tous les champs que nous allons utiliser dans cette table.

view.xml
Comme nous avons défini tous les champs nécessaires dans le fichier model.py, nous devons
maintenant créer une vue pour cela. Comment l'utilisateur doit-il voir cela, il doit y avoir le champ du
nom ? Une telle chose peut être définie dans le fichier view.xml.

Maintenant, nous avons créé une table dans la base de données, ici nous devons définir comment
elle doit être dans l'interface utilisateur et sous quel menu elle doit être, etc. Dans notre cas, nous
allons créer un nouveau menu appelé config et sous config, nous pouvons créer un sous-menu
appelé symptôme, diagnostic etc.

1- Diagnostic
Le fichier __init__.py
import model
Le fichier __manifest__.py
{
'name': 'Diagnoostic',
'summary': """il contient toutes les diagnostiques des patients""",
'version': '10.0.1.0.0',
'description': """il contient toutes les diagnostiques des patients""",
'author': 'Bousrhal Mohammed',
'company': 'Cabinet Médical Bousrhal',
'category': 'Tools',
'depends': ['base'],
'license': 'AGPL-3',
'data': [
'view.xml',
],
'demo': [],
'installable': True,
'auto_install': False,
}
Le fichier model.py
from odoo import models, fields
class fichiers(models.Model):
diag_name = "diag.diag"
diagnostic_scann= fields.Binary(string='Photo')
Le fichier views.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<menuitem id="menu_cabinet" name="Cabinet Médical Bousrhal"/>
<menuitem id="Cabinet" name="Patient" parent="menu_cabinet"
action="action_view_patient"/>
</data>
</odoo>

2- Fichiers

Le fichier __init__.py
import model
Le fichier __manifest__.py
{
'name': 'fichiers',
'summary': """il contient les comptes rendus des analyses ou les images
cray etc...""",
'version': '10.0.1.0.0',
'description': """il contient les comptes rendus des analyses ou les
images cray etc...""",
'author': 'Bousrhal Mohammed',
'company': 'Cabinet Médical Bousrhal',
'category': 'Tools',
'depends': ['base'],
'license': 'AGPL-3',
'data': [
'view.xml',
],
'demo': [],
'installable': True,
'auto_install': False,
}
Le fichier model.py
from odoo import models, fields
class fichiers(models.Model):
doc_name = "doc.doc"
name = fields.Char(string='Name', required=True)

doc_scan = fields.Binary(string='Photo')

Le fichier views.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<menuitem id="menu_cabinet" name="Cabinet Médical Bousrhal"/>
<menuitem id="Cabinet" name="Patient" parent="menu_cabinet"
action="action_view_patient"/>
</data>
</odoo>

3- Ordonnance

Le fichier __init__.py
import model

Le fichier __manifest__.py

'name': 'Ordonnance',
'summary': """il contient les ordonnaces de tous les patients """,
'version': '10.0.1.0.0',
'description': """il contient les ordonnaces de tous les patients""",
'author': 'Bousrhal Mohammed',
'company': 'Cabinet Médical Bousrhal',
'category': 'Tools',
'depends': ['base'],
'license': 'AGPL-3',
'data': [
'view.xml',
],
'demo': [],
'installable': True,
'auto_install': False,

Le fichier model.py
from odoo import models, fields
class fichiers(models.Model):
ordonnance_name = "ordonnance.ordonnance"
ordonnance_name = fields.Char(string='Name', required=True)

scann_photo = fields.Binary(string='Photo')

Le fichier views.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<menuitem id="menu_cabinet" name="Cabinet Médical Bousrhal"/>
<menuitem id="Cabinet" name="Patient" parent="menu_cabinet"
action="action_view8patient"/>
</data>
</odoo>

4- Symptôme

Le fichier __init__.py
import model

Le fichier __manifest__.py
{
'name': 'Symptomes',
'summary': """il contient les symptomes de chaque maladies""",
'version': '10.0.1.0.0',
'description': """il contient les symptomes de chaque maladies""",
'author': 'Bousrhal Mohammed',
'company': 'Cabinet Médical Bousrhal',
'category': 'Tools',
'depends': ['base'],
'license': 'AGPL-3',
'data': [
'view.xml',
],
'demo': [],
'installable': True,
'auto_install': False,
}

Le fichier model.py
from odoo import models, fields
class fichiers(models.Model):
symp_name = "symp.symp"
name = fields.Char(string='Name', required=True)

Le fichier views.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<menuitem id="menu_cabinet" name="Cabinet Médical Bousrhal"/>
<menuitem id="Cabinet" name="Patient" parent="menu_cabinet"
action="action_view_patient"/>
</data>
</odoo>

Les fichiers sont importés directement au progiciel Odoo.

Vous aimerez peut-être aussi