Beruflich Dokumente
Kultur Dokumente
Rapport de stage:
Amlioration d'un module mdical sous systme ERP
Remerciements
Je tiens remercier mon tuteur d'entreprise Pierre Girard , pour m'avoir accompagn et soutenu au
long du stage. Ainsi que mon patron Martin Auger, pour sa disponibilit et sa patience.
Remerciement galement Patrick Lebgue pour son suivi en tant que tuteur de stage, et Jrme
Hennebert, Jean Martinet et Jean-Marie Place pour se charger de ma soutenance de stage alors mme que
cela n'tait pas initialement prvue.
Je souhaite galement exprimer ma reconnaissance tous mes professeurs de l'IUT A, pour
l'excellent enseignement qu'ils nous ont dispenss.
Enfin remerciements Sylvie Breault ,Philippe Leduc et Valrie Buquet, pour avoir organis
l'accueil des tudiants franais Sherbrooke.
Rsum
Ce rapport de stage de fin de DUT informatique prsente le travail que j'ai effectu au cours de mon
stage l'Internationale chez Erp Quebec Inc. Il s'agit d'une trs petite entreprise, proposant des solutions
partir de logiciels de gestion en distribution libre (GPL), et plus particulirement OpenERP, un logiciel ERP
utilis au niveau mondiale.
Mon projet dans cette entreprise fut de reprendre un ancien module mdical d'OpenERP, encore
jamais utilis chez les clients. Ma tche tant de passer ce module de la version 5 la version 6.1.1 et
l'amliorer pour le rendre fonctionnel. Il me fallait donc crer une gestion des vaccins, relier les mdications
dfini plusieurs endroit dans le module, et importer des bases de donnes exporter avec ACCESS. Sans
l'utiliser, car ce n'est pas un programme libre.
Dans ce rapport je prsenterai plus compltement mon entreprise d'accueil, puis les dveloppements
que j'ai raliser avec les langages python, sql et xml. Et je finirai par un bilan technique et humain de ce
stage.
Abstract
This internship report of study end describe the work I did during my internationale intership in
Erp Quebec Inc. It's a very little enterprise who give solutions with free software (GPL) and specially
OpenErp, a ERP software used in the world.
My project in this enterprise was of adapt a old medical module, who wasn't yet used by customers.
My task whose of upgrade this module of the version 5 to the version 6.1.1 and improve it for it become
functionnal. So I had to create a vaccin managing, link the medications defined at many emplacements in the
module, and import databases exported with ACCESS. But without using it, because it isn't a free software
and that my enterprise use only this programs.
In this report I will begin at present more completly my Home Business, and after I will present the
developpements I did with the languages python, sql and xml. To finish I will draw up a bilan, about the
aspects technical and social of this experience.
Introduction
Dans le cadre de mes tudes, j'ai choisi de faire mon stage de fin d'tude Sherbrooke, au Qubec. Je
me suis vu offrir un poste de programmeur dans une entreprise d'informatique de Gestion, ERP Quebec, et
j'ai dcid d'accepter. J'ai ainsi pu dcouvrir de nouvelles mthodes de travail, et galement une nouvelle
culture, ce qui est toujours stimulant.
Une fois ma formation faite, mon tuteur m'a expliqu mon prochain projet. Celui ci tait de reprendre
un module d' OpenERP , afin de crer une version de test du 1er module mdical sur OpenERP. Mon
module servira de modle de dmonstration, prsenter au professionnelles qui ensuite pourront demander
les modifications voulu. Ce module permettait alors l'ajout des patients et leurs suivi mdical en version
5.1.
Il d'abord fallu passer le module la version 6.0.3 avant de passer aux autres modifications. Les
problmes qui ce sont alors prsent, furent le manque d'ergonomie1 des vues, la gestion des mdicaments
effectuer plusieurs endroits, une gestion des vaccins inexistantes et l'importation de bases de donnes
ACCESS. Cela alors mme que nous n'utilisions pas ACCESS pour notre base de donne, les solutions que
nous proposons aux entreprises tant uniquement des solutions libres.
Pour rsoudre ces problmes, j'aurai recours au langage xml pour crer des vues, au langage python
pour les fonctionnalits et au langage SQL pour la gestion des bases de donnes. Ceux ci tant ceux utilises
par OpenErp. Quand la mthodologie utilise j'utiliserai le dveloppement dirig par les tests. Ce qui me
fera avancer plus lentement, mais m'vitera de perdre du temps aprs le dveloppement corriger les bugs.
Dans une premire partie, je vous prsenterai mon entreprise d'accueil, afin que vous puissiez
comprendre le cadre de ma mission. Puis je parlerai des missions que j'ai accomplie. D'abord la mission que
j'ai effectuer avec l'aide de mon tuteur au cours de ma formation, avant de passer a mon projet proprement
dis, en dtaillant l'analyse, le dveloppement et les tests. Pour finir, je dresserai un bilan technique et humain
qui montrera les diffrentes comptences que j'ai acquises, et leurs liens avec l'enseignement reu l'IUT.
1 Voir glossaire
I.1 Prsentation
Localise dans la rgion de Sherbrooke depuis 2007, ERP Qubec Inc. sest positionne titre de
partenaire privilgi auprs dentreprises et dorganisations par le biais des logiciels de gestion en
distribution libre (GPL) tels que OpenERP, Linux Ubuntu, PostgreSQL et plus.
Les services offerts par ERP Quebec Inc sont la Prparation, la Conception, la Ralisation,
l'Intgration, la Mise en production, le soutien et le service. Dans le cas d'entreprises avec des besoins
spcifiques, non couverts par les centaines de modules d'OpenERP, cette entreprise se charge de les adapter
pour ses clients.
Le principale logiciel utilis par cette entreprise est le systme ERP2, OpenERP. OpenERP est un
des rares logiciels ERP libre. Il fait ses preuves et ce bien qu'il n'existe que depuis 2005. Il avait alors t
crer sous le nom de TinyErp.
OpenERp, c'est ainsi 400 partenaires rparti dans 70 pays, 1500 contributeurs et 180 employs.
Ces modules comprennent la gestion de la relation client, la comptabilit analytique et financire (conforme
pour une douzaine de pays) , la gestion des stocks , la gestion de production , la gestion de projets et des
activits de services,...
I.2 Organisation
Erp Quebec Inc est une entreprise en pleine expansion qui n'est pour l'instant composes que de 3
personnes, et un stagiaire. tant donn la taille rduite de l'entreprise, l'ambiance est conviviale et chacun se
doit d'tre polyvalent dans son domaine d'activit.
Le patron: Martin Auger, le fondateur de OpenErp, qui a travaill pendant plus de 12 ans avant de se
mettre son compte. Bien qu'il occupe la direction de l'entreprise, il est trs polyvalent et
en plus de grer les relations avec les clients, il s'occupe en bonne partie de l'analyse et de la
programmation.
Les programmeurs: Pierre-Luc et Pierre Girard
Stagiaire: Moi, actuellement prsent pour un stage en programmation de 3 mois.
I.3 Historique
3 Cette interview se trouve dans Palmars des carrires 2012 de Septembre diteur.
9
I.4 Partenaires
ERP Entreprises
Situe Saint-Casimir, non loin de Trois-Rivires, ERP-Entreprises est une
firme internationale spcialise dans limplantation des Technologies
dOptimisation des processus de Production et de Gestion Valeur Ajoute.
Ces dernires annes, ERP-Entreprises a, par de multiples interventions
auprs de ses clients, intgr linformatisation des processus en utilisant diffrentes techniques
informatiques.
Gestion Ressources
Forte dune quipe de prs de 10 personnes, Gestion-Ressources situe
Montral accompagne les entreprises dans limplantation, le conseil et la
formation de leurs employs pour des solutions libres professionnelles.
Gestion-Ressources renforce son positionnement dans lindustrie du logiciel
libre en tant identifi comme lun des trois partenaires de la socit OpenERP au Qubec et lunique dans la
grande rgion de Montral.
Groupe Logic Expert
Groupe Logic Expert inc. assiste les entreprises dans la ralisation de leurs
projets en technologie de l'information. l'aide d'une approche personnalise
et d'un partage de connaissances, ils les accompagnent sur l'ensemble du
cycle de vie de leur projets.
Linko Solutions
Base Montral, Linko solutions est ne de lassociation de spcialistes
issus du monde des solutions daffaires commerciales (Enterprise Ressource
Planning ERP, Web, e-Commerce Boutique en ligne, e-Marketing). Sa
dmarche est base sur le constat que les PME ont des besoins comparables
aux grandes entreprises en termes dapplication daffaires et que ceux-ci ne peuvent tre satisfaits par les
logiciels commerciaux du march.
10
I.5 Clients
MG Service
Depuis 1979, MG Service a pour mission doffrir lentretien prventif, la vente de
pices et le service durgence pour toutes les marques de surfaceuses glace.
Actuellement compte 12 employes.
Dupray Industrie
Prsent au Canada comme aux Etats-Unis, Dupray
commercialise des solutions de nettoyage cologique. Ainsi,
cette entreprise commercialise des machines planchers
Multiplo, des nettoyeurs haute pression vapeur, des
machines nettoyer les tapis, des nettoyants cologiques et
des savons .
11
II.2 Analyse
II.2.1 Les vues
Aprs ma formation, je me suis vu confier un projet raliser cette fois ci seul pour crer un dossier
charger de grer le dossier mdical des patients. Je devais donc reprendre un module 8 crer par mon patron
en 1 semaine ses dbut pour la version 5.0.3, et l'amener la version 6.1.1 pour avoir une version de
dmonstration prsenter d'ventuelles clients. OpenErp n'ayant pour l'instant aucun module mdical, cela
sera pour nous l'occasion d'largir notre clientle.
12
Au dbut il fallut beaucoup de tests avant que le module puisse s'installer correctement en 6.0.3, la
dernire version stable, ce que je dtaillerai dans une prochaine partie. Mais mme une fois le module
install, il apparut rapidement que le module tait facilement amliorable. Voici en effet pour exemple, la
faon dont sont reprsenter les assurances du patient, lorsque l'on cre ou modifie un patient partir du
formulaire associ.
La 1er chose qui saute au yeux est le faite de voir dans le patient rappeler l'identifiant du patient, que
l'on ne connait d'ailleurs mme pas celui ci tant cre automatiquement par le programme. De mme, pour
cre une assurance personnel le patient doit rappeler qui il est, comme on le voit dans le sous formulaire.
Ma 1er tche fut donc de me charger de l'ergonomie9 des vues avec:
*cration des vue de sous formulaires, et mme sous-sous-sous-sous formulaire pour viter
de rappeler les informations disponible comme id du patient, de la consultation...
*ajout de champs related10 pour les tables reli hors sous-formulaire.
Un champ related11 , est un champ indiquant l'information d'une autre table auquel on est
reli. Par exemple le nom du docteur dans la table consultation, pour la table examen.
*remplacement des 3 champs de 4 chiffres pour le numro d'assurance maladie
par un de 12 chiffres dans le formulaire du patient
*amlioration des vues de recherches
13
Pour pouvoir rajouter ces fonctionnalits il m'a fallut crer des scripts python, et bien videmment
modifier la structure de la base de donn.
Pour grer la mdication des patients correctement, j'ai d'abord penser crer des mdications
partir des prescriptions et leur donner l'identifiant du patient de la prescription. Mais je me suis alors
trouver confronter un problme pineux.
En effet, j'ai voulu raliser cette fonction par le remplissage d'argument automatique dans les sousformulaires , mais je me suis rapidement rendu compte que l'identifiant du patient n'tait pas pass travers
3 sous-formulaires.
Au final, j'ai donc dcid de redfinir la fonction de cration des prescriptions, pour crer en mme
temps une mdication reprenant les mmes informations que celles dj crite. Cela me permet galement
d'viter de surcharger les utilisateurs avec encore plus de sous-formulaire. Mais pour laisser le systme
d'information cohrent, il me faudra galement m'occuper des mises a jour et suppressions pour rpercuter
les changements de l'un sur l'autre.
Quand la gestion des vaccins, il faudra crer un champs dans les vaccins indiquant le temps avant
le prochain vaccin, que je prvois de laisser 0 en cas de vaccin effectuer une fois dans la vie. Quelques
champs ajouts dans le patient pour stocker le prochain vaccin faire, et il ne me reste plus qu'a crer les
fonctions pour remplir ces champs.
Quand la dernire fonctionnalit, il me suffit d'ajouter dans les fonction de cration et criture des
consultations une rcriture du patient associ pour mettre sa date jour, ce qui sera vite fait.
Je vais tout d'abord commencer par l'importation de la BDPP. J'ai regarder les fichiers csv a importer
ainsi que le site de rfrence 13 qui contient la structure des tables trop longue pour tre crite ici, et la
description des relations14 .
L'on voit rapidement que le champs drug_code est prsent dans chaque table, or toutes les tables sont
lie au mdicament d'aprs la description des relations peut comprhensible. J'ai donc pense une cl
trangre15 drug_code, qui pour chaque fichier de mdicament rfrence drug_code de la table mdicament.
Mais rapidement cette ide semble bizarre, car a un ingrdient ne correspond pas un unique mdicament, ce
qui serait le cas si on avait une cl trangre. C'est en regardant les fichiers csv que j'ai eu la solution, en effet
ceux ci sont remplis de doublons. Ainsi toutes les informations des ingrdients sont rcrire plusieurs fois
avec des drug_code diffrent.
12 Voir glossaire
13 Le site de rfrence: http://www.hc-sc.gc.ca/dhp-mps/prodpharma/databasdon/dpd_read_me-bdpp_lisez-moi-fra.php
14 Voir l'annexe "Relations BDPP"
15 Voir glossaire
14
Aprs lecture des autres fichiers csv, il apparat donc que toutes les donnes ont t exporter avec des
cls trangre pour les relations, au lieu de tables relations 16 qui permettent de coder des relations plusieursplusieurs. En effet, un ingrdient peut-tre utilis dans plusieurs mdicaments, et un mdicament avoir
plusieurs ingrdients par exemple. Pour viter d'avoir autant de doublons que dans les fichiers csv, je vais
donc changer la structure des tables import pour avoir des tables relations au lieu de cls trangres. Faire le
passage d'une structure a l'autre sera alors le principale travail de mon programme d'importation.
L'image ci dessus reprsente les liens qui serait crer avec les fichiers suivants.
Medicament.csv: drug_code , brand_name,....
1,aspirine,...
2, remineralisant, ...
ingredient.csv: drug_code, ingredient,....
1, aspartane,...
2,carbonate,....
1,carbonate,....
1,algue,....
II.2.3.2 Importation de Cim10
Lorsque j'ai eu la mission d'importer la base Cim10, Pierre Girard, mon tuteur, avait dj trouv une
base importer et il m'a montrer le schma 17 de la base sous Microsoft Access. Mon tuteur m'a galement
fourni un document de 54 pages dcrivant la structure complte de la base et son fonctionnement sous
AS400.
Aprs l'importation prcdente, je savais qu'il serait facile d'importer les tables "en copie" dans le
systme en reprenant mon ancien assistant et en changeant juste les noms de ce qu'il faut importer. Quand a
la structure des tables j'ai fait peu de changement, la prcdente tant viable.
Les changements sont:
*suppression de la table chapter, en effet l'ordre des chapitres sert lorsque l'on veut afficher la
base de donn sous forme de pdf, ce qui ncessiterai un programme crire.
Comme ce n'est pas notre cas, nous n'en avons pas besoin.
*suppression de la table system, car une table master correspond un libelle systmatique, qui sera
donc stock directement dans la table master.
16 Voir glossaire
17 Voir l'annexe "MLD CIM10"
15
*stockage dans classification(master sur le schema) des attributs contenu dans la table common.
En effet un enregistrement de master correspond 0 ou 1 enregistrement de common. Et
d'aprs le document de rfrence, les champs boolen female, sequela,post... doivent tre
considr false si la table master n'est pas reli une table common. J'ai donc dcid de
reporter tous les attributs directement dans la table master pour ne pas surcharger la base de
donne de tables, ce qui est peu lisible.
*Toujours pour ne pas surcharger le systme de tables, j'ai supprim la table libelle
et remplacer les rfrences cette table par le libell correspondant.
*Enfin, chaque table master contient les champs id1,id2,id3...id7
Ceux ci reprsentent en faite les diffrents niveaux de classification du master.
Le dernier champ non nul reprsente l'id du master courant.
L'avant dernier champ non nul celui du parent du master, si ce champ existe.
L'avant avant dernier non nul reprsente le grand parent.
Cette structure ne convenant pas pour une visualisation via openErp, j'ai dcider avec mon
tuteur de remplacer ces champs par un unique champ indiquant le parent du master. Cette
tape sera la plus "dlicate" de l'importation, mais nous verrons ca dans la partie
dveloppement.
Jtais galement cense ralise la mises jour de la CIM10, mais les seuls fichiers de mise jours
trouver dans des formats xls se sont rvls trs dur importer cause de multiples cas grer pour une
importation par programme. L'opration tait dj compliquer car les modifications n'tait pas codes table
par table. Elle semblait encore plus dur quand j'ai remarquer des erreurs dans le fichiers (ex: cration de code
au lieu de modification de code existant). Puis elle est apparu totalement impossible lorsque je me suis rendu
compte que dans les fichiers xls apparaissaient des mots barrs que le programme ne pouvait pas voir...
J'ai donc eu l'accord de mon tuteur pour pass un autre module, que je ne dtaillerai pas ici. Mon
module et mon stage n'tant pas encore fini.
II.3 Dveloppement
II.3.1 Les vues
Sous openErp, les vues sont coder en xml. XML signifie eXtensible Markup Language, autrement dit
"Langage de balisage extensible" et est donc un langage balise comme le html. Il est principalement utilis
pour sauvegarder des donns, ici sur les vues. OpenErp dfinissant ses propres fonctions, c'est le seul logiciel
pouvoir afficher les vues que j'ai cre en xml.
La cration de vue gnre en thorie peut d'erreur, hormis parfois des erreurs d'identifiants (nom non
dfini, id non unique...). Le principal travail ici est donc de filtre les informations, d'utiliser les
regroupements, vues de recherches... afin d'obtenir une vue avec la meilleur ergonomie18 possible. En
loccurrence j'ai fais les changements dcrit dans la partie d'analyse, et coder les vues 19 pour la vingtaine de
tables importer.
18 Voir glossaire
19 Pour vous faire une meilleurs ide des vues que j'ai cre je vous invite regarder les annexes "Architecture module
health", "barre recherche patient" et "formulaire classification".
16
Passons maintenant aux fonctionnalits que j'ai dvelopper. Les classes et les fonctions dans
OpenErp sont cod par le langage orient objet20, qui est galement un langage interprt21, Python. Celui ci
possde une syntaxe ressemblant celle du java ou du C, avec cependant quelques changements dont les
plus important me semble tre la disparition des types des variables et la dfinition des blocs par
l'indentation. L'on trouve galement des fonctionnalits supplmentaire tel que les dictionnaires, les tuples ou
les comprhensions de liste.
Les fonctions python sous OpenErp peuvent tre appel la cration d'un objet, son criture, ou sa
suppression en redfinissant ses fonctions dans OpenErp. Ce que j'ai fais pour coder les fonctionnalits lister
dans la partie d'analyse. Mais les fonctions python peuvent galement tre appeles lappuie d'un bouton, le
changement d'un champs...
La principale difficult pour dvelopper est alors de connatre les fonctions qui nous sont ncessaire.
Pour cela j'ai utilis la fiche de synthse sur OpenErp 22, internet, l'aide de mes collgues... Mais avant tout,
ma principale source d'aide fut le code des autres modules, comme pour la cration de xml d'ailleurs.
20 Voir glossaire
21 Voir glossaire
22 Retrouvez cette fiche http://doc.openerp.com/memento/OpenERP_Technical_Memento_v0.6.4.pdf
17
Voici un exemple de code python affichant un message d'erreur si on veut supprimer une mdication
prescrit par une prescription, sans avoir supprimer cette prescription:
23 Pour avoir une vue d'un code python plus consquent, regardez l'annexe "Code affichage prochain vaccin"
18
Base de donnes
Nombres de lignes
imports
Temps d'importation
BDD
192772
146408
non
1h 10mn
CIM 10
57479
Oui
1h
19
Ensuite afin de tester mon module, j'ai bien videmment remplie la base avec des donnes tests pour
voir si cela provoquer d'ventuelles bug et pouvoirs tester l'ergonomie25 de mes vues de recherches. Cela
gnralement suffi me montrer les bugs corriger. Mais j'ai galement effectuer des tests de boites noires26
et des test de boites blanches27 en crant des jeux de tests28 .
Un des bugs que j'ai trouv fut provoquer car les donnes importer comprenait dans les 2
importations, des doublons aux niveaux des fichiers csv. Ce problme fut rapidement rsolu en supprimant
les doublons du fichier csv, mais j'ai d'abord du cre un script shell que voici pour me sortir ces doublons. Ici
l'exemple pour vrifier si le fichier exclude un doublon sur sa cl primaire (SID, excl, LID) respectivement
en colonne 1, 2 et 4 dans le fichier csv.
cat EXCLUDE.csv|cut -d';' -f1,2,4|sort -u> nodoublon.csv;
cat EXCLUDE.csv|cut -d';' -f1,2,4|sort > doublon.csv;
diff doublon.csv nodoublon.csv
II.5 Conclusion
En conclusion, ce qui devait tre la base une simple mise jour de module m'aura pris finalement 6
semaines, afin de raliser les nouvelles demandes qui sont venu se rajouter au fur et mesure de la
construction.
Mais grce aux modifications de structure que j'avais prvue de faire aprs avoir vu les schma des
MCD du module health et des bases de donnes importer, le dveloppement du projet en python, xml et sql
s'est retrouv grandement facilit. Le dveloppement dirig par les tests m'ayant permis de raliser un travail
viable.
Et au final j'ai put crer la 1er version de module mdical d' OpenErp fonctionnel, et ce fessant voir
une bonne partie des fonctionnalits permises par OpenErp. Ce qui me sera par la suite profitable dans ma
vie professionnelle, OpenERP tant un systme ERP29 mondial, qui est galement trs utilis en France.
25
26
27
28
29
Voir glossaire
Voir glossaire
Voir glossaire
Vous pouvez voir un exemple de jeu de test l'annexe "jeu de test, liaison mdication-prescription"
Voir glossaire
20
30 Voir glossaire
21
Ce stage m'aura au final permis de confirmer m'a passion pour le mtier de programmation. Je pense
ainsi pour l'instant faire un mtier de programmeur polyvalent, car cela me donne l'impression d'avoir
participer une ralisation concrt. Ce qui je pense ne serait pas le cas, avec des mtiers comme analyste
programmeur ou chef de projet qui ne doivent pas forcment savoir coder et ne connaissent donc pas les
difficults du "terrain".
Mais il me reste beaucoup de choses apprendre, que je sois au cours des tudes que je vais faire ou
de mes prochains stage. Il n'est donc pas impossible que plus tard je change d'ide, et que je m'oriente vers
un projet professionnelle plus ambitieux.
D'ailleurs afin d'avoir une meilleur vues des possibilits qui s'ouvrent moi je compte bien essayer
de faire un stage dans de plus grandes entreprise, franaise cette fois. Et galement travailler dans d'autres
domaine, celui que j'aimerai le plus voir tant celui des jeux vido.
Ce que j'aurai surement l'occasion de faire, car je compte raliser un master IVI (Image Vision
Interaction) Lille1. Ceci me permettra de voir les bases de l'imagerie numrique, la ralit augment, la
gestion de l'interaction... autant de savoirs utile dans les jeux vidos, mais que je pourrai galement utiliser
dans d'autres domaines.
22
III.5 Conclusion
Au cours de mon stage j'aurais put ainsi apprendre l'utilisation de nombreux outils et de nouvelles
comptences, d'autant qu'tant donn le peu d'effectif de l'entreprise chacun se devait d'tre polyvalent.
J'ai ainsi appris par exemple reprendre le code d'autres programmeurs, grer des bases de donnes, m' autoformer ou mme raliser une communication efficace.
Cela m'aura galement permis de dcouvrir le domaine de l'informatique de gestion, principale
dbouch aprs un DUT informatique. Mais ce qui me semble galement le plus important, cela m'aura
permis de dcouvrir la structure particulire des trs petites entreprises qui on un dynamisme et une
convivialit que je ne pense pas retrouver ailleurs.
23
Conclusion:
Au final les changements du MCD du module health en fonction des bases de donnes importer et
des fonctionnalits apporter m'aura permis d'en optimiser plus facilement la gestion des mdications et des
vaccins. Ainsi que de fournir aux utilisateurs un ensemble de donne tendu pour les maladies et les
mdicaments.
Ce stage m'aura de plus permis d'appliquer et de dvelopper mes comptences, aussi bien technique
que relationnelle, et de voir l'ensemble des opration ncessaire un dveloppement. J'ai ainsi appris par
exemple reprendre le code d'autres programmeurs, grer des bases de donnes, m' auto-former ou mme
raliser une communication efficace.
J'ai ainsi eu la chance de dcouvrir le domaine de l'informatique de gestion, dans les trs petites
entreprises. Ce que je compte bien comparer avec d'autres entreprises, pour pouvoir mieux apprhender les
spcificits des entreprises qubcoises, ainsi que celles de diffrents secteurs.
De plus cela m'aura permis de fournir le 1er module mdical d' OpenERP. Il ne reste maintenant plus
qu'a voir si ce qui l'origine un logiciel de gestion sera mme de conqurir le domaine mdical, et
pourquoi pas d'autres secteurs dans le futur.
24
Annexes
Analyse
Analyse gestion de versions de module
Module: erpquebec_module
Description: Ce module nous permettra de faire une gestion simple de nos versions de modules dvelopps
l'interne.
Tables mettre en place:
1 erpq_module (table matre des modules)
2 erpq_module_rev (table des rvisions)
3 erpq_module_rev_backup (table pour grer nos sauvegardes)
3 erpq_openerp_version (grer les versions de OpenERP)
Tables et champs:
1. erpq_openerp_version (contient toutes les versions de OpenERP)
1. version (type char)
2. date_of_release (date de relche)
2. erpq_module (table matre pour les modules)
1. name (nom du module)
2. description (description du module)
3. origin (description de l'origine de la demande - problmatique.)
4. erpq_module_rev_ids (one2many sur erpq_module_rev)
3. erpq_module_rev (Table pour les rvisions)
1. erpq_module_id (many2one sur erpq_module)
2. revision (champ caractre)
3. objectif (champ caractre)
4. project_id (many2one sur project)
5. depend (champ caractre , on y inscrit les dpendances)
6. revision_date (date de rservation)
7. release_date (date de relche)
8. programmer_user_id (many2one sur res_users, usager faisant la rvision)
9. unit_test_user_id (many2one sur res_users, usager faisant les tests)
10. openerp_version_ids (identifie les versions sur lequel le module a t test)
11. obsolete (champ bollean indiquant que cette version n'est plus ou pas utilisable)
12. customer_ids (one2many sur res_partner, indique les clients o est install le module)
13. check_module_desc (champ boolen, indique si la description du module a t vrifi.)
14. check_security (champ boolen, indique si la scurit t vrifie)
15. check_translation (champ boolen, indique si la traduction t vrifie)
16. check_print_comment (champ boolen, indique qu'il n'y a plus de message de dbogage)
17. state (champ de type slection; en dveloppement, en test, approuv...)
18. erpq_module_rev_bk_ids (one2many sur erpq_module_rev_bk)
4. erpq_module_rev_backup (Contient les sauvegarde journalire)
1. erpq_module_rev_id (many2one sur erpq_module_rev)
2. date (date du jour)
3. file_name (nom du fichier attach, de type char)
4. file_data (donnes du fichier, de type binaire)
25
26
MLD CIM10
27
Relations BDPP
Autre
28
Code
Code affichage prochain vaccin
29
Screen
30
Formulaire classification
31
Formulaire gestion
version module
32
33
Glossaire
Champ related:
Un champ related, est un champ indiquant l'information d'une autre table auquel on est reli. Par
exemple le nom du docteur dans la table consultation, pour la table examen.
Cl trangre:
En modlisation, une cl trangre est un champ d'une table qui fait rfrence l'identifiant d'une
autre table. Cela permet de coder des relations un-plusieurs. Par exemple si chaque mdicament n'est
fabriqu que par une seul compagnie, il suffit de rajouter dans les mdicaments une cl trangre qui fait
rfrence la compagnie fabriquant le mdicament.
Ergonomie:
L'ergonomie est l'tude scientifique des relations entre l'homme et ses outils de travail milieux...
et l'application de ses connaissances la cration de systmes qui puissent tre utiliss avec le maximum de
confort, de scurit et d'efficacit par le plus grand nombre .
On trouve par exemple en ergonomie la "rgle des trois clics" que j'ai utilis. Cette rgle dit que
l'utilisateur doit pouvoir acceder n'importe qu'elle information en trois clic maximums, pour pouvoir
rapidement trouv l'information qu'il cherche sans tre frustr.
Langage interprt:
Un langage interprt n'est pas excut directement par la machine, mais par un autre programme
appel interprte. Au contraire, un programme crit en langage compil est traduit en code binaire et est
lisibles par la machine.
Un programme interpret peut fonctionner sur tous les systmes d'exploitation ayant l'interprte, la
o un executable ne peut s'executer que sur un unique systme d'exploitation. Au final, les langages compils
sont plus rapides, mais ncessitent une compilation par systme d'exploitation.
Langage orient objet:
Les langages orients objets sont des langages permettant de dfinir des "objets" par un ensemble
d'attributs et de fonctions. La communication entre les objets via leurs relations permet de raliser les
fonctionnalits attendues, de rsoudre le ou les problmes.
Scurit:
La ralisation d'une politique de scurit sous OpenErp, passe par la cration de groupes
d'utilisateurs tels que Chef comptable ou employ comptable et la dfinition du droit de ces groupes
d'utilisateur sur les tables, les vues... du module. Les diffrents droits des utilisateurs sont la lecture,
l'criture,la cration et la suppression.
34
Systme ERP:
ERP est un sigle anglais qui signifie Enterprise Resources Planning, soit "planification des
ressources de l'entreprise". Il dsigne les applications informatiques permettant aux entreprises de grer la
totalit de leur activits, et d'optimiser l'ensemble de leurs ressources. L'quivalent francais du sigle ERP, est
PGI pour Prologiciel de Gestion Intgr.
Table relation:
Jappelle ici table relation, une table contenant les relations entre deux autres tables ont plus. Pour
cela, elle stocke pour chaque association les identifiants de chacune des tables relis et d'ventuelles
informations relative cette association.
Test de boite blanche:
Les tests de boites blanches dsignent le fait le construire les tests d'un programme en s'aidant de son
code. Le principe est de faire des tests qui vont passer par chaque ligne du code pour vrifier qu'elle est
valide.
Test de boite noire:
Les tests de boites noires dsignent le fait de construire les test d'un programme sans connatre son
code. Souvent ceux ci sont crer avant l'criture du programme pour ne pas tre influenc par la faon dont
on a cris le code. Les tests de boites noirs reposent la notion de "catgories" qui considre que plusieurs
donnes d'entres devraient tre soumis aux mmes traitements.
Ex: Si on calcule le cout de l'essence d'un parcours en fonction du nombre de kilomtres parcouru,
toutes les entrs ngatives doivent renvoyer une erreur. Les entres ngatives font donc parti
de la mme catgorie.
35
Bibliographie:
36