• Aucun résultat trouvé

Mise en place de l'historique sanitaire pour le système d'information CaSaME (Carnet Sanitiare Multi Espèces)

N/A
N/A
Protected

Academic year: 2021

Partager "Mise en place de l'historique sanitaire pour le système d'information CaSaME (Carnet Sanitiare Multi Espèces)"

Copied!
32
0
0

Texte intégral

(1)

HAL Id: hal-02800952

https://hal.inrae.fr/hal-02800952

Submitted on 5 Jun 2020

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Mise en place de l’historique sanitaire pour le système

d’information CaSaME (Carnet Sanitiare Multi Espèces)

Abdelhadi Temmar

To cite this version:

Abdelhadi Temmar. Mise en place de l’historique sanitaire pour le système d’information CaSaME (Carnet Sanitiare Multi Espèces). Sciences du Vivant [q-bio]. 2015. �hal-02800952�

(2)

Maître de stage: Alexandre JOURNAUX

Tuteur universitaire : Carole Bernon

INRA Toulouse Midi-Pyrénées Unité GenPhySE

24 chemin de Borde Rouge 31326 Castanet-Tolosan

Mise en place de l’historique sanitaire pour le

système d’information CaSaME (Carnet

Sanitaire Multi Espèces)

Rapport de stage

TEMMAR Abdelhadi

Stage de 3ème année de licence informatique

Du 20 avril au 14 août 2015

Soutenance le 8 juin 2015

Université Toulouse III – Paul Sabatier 118 route de Narbonne

(3)

Table des matières

Remerciements...4

Introduction...5

I Présentation de l’entreprise...6

1 INRA...6

2 Département Génétique Animale (GA)...6

3 Unité GenPhySE...6

4 Équipe informatique et automatisme...7

II Présentation détaillée du sujet...8

1 But du stage...8

2 Analyse et intégration de base de données...9

3 Interface graphique...9

III Technologies utilisées...10

1 SQL...10 1.1 MySql...10 1.2 Oracle...10 1.3 SQuirreL SQL Client...10 2 C#...11 2.1 Visual Studio 2010...11 2.2 Framework .net...11 3 Subversion...12 4 Nhibernate...12

5 Couche IHM (FrameWork Maison)...12

6 Charte ergonomique...12 7 Moyens à disposition...12 IV Organisation...13 1 Méthode de travail...13 1.1 Méthodes Agiles...13 1.2 Scrum...14 2 Planning...17 V Travail réalisé...19

1 Analyse et intégration de la base de données OVITEL...19

1.1 Analyse...19

(4)

2 Interface graphique...23

VI Bilan pour l’entreprise...25

1 Niveau d'atteinte des objectifs...25

2 Apport du travail réalisé...25

VII Bilan Personnelle...26

1 Enseignements appris à l'université, utilisés lors du stage...26

2 Apprentissage de nouveaux outils en période de stage...26

3 Apport au projet professionnel...26

Conclusion...27

Glossaire...28

Références...29

Annexe Technique...30

MLD CaSaME...30

(5)

Remerciements

Je tiens à remercier tout particulièrement les personnes suivantes :

Tout d'abord Alexandre JOURNAUX, mon tuteur, de m'avoir donné sa confiance pour la réalisation de ce projet, et pour m'avoir épaulé tout au long de mon stage.

Mme Carole BERNON, ma tutrice universitaire, qui est venue me rendre visite à l'INRA et s'est occupée de suivre le bon déroulement de mon stage.

L'Université Paul Sabatier pour la qualité de la formation.

M. Gilbert NEGRO pour avoir préparé mon poste de travail avant mon arrivée et avoir été là au moindre problème informatique.

M. François LAPERRUQUE pour m'avoir accueilli dans son service.

Sans oublier les autres membres de GenPhySE tels que Sophie NORMANT, Jean-François BOMPA, Edmond RICARD, Gaetant NOZET, Herve LAGANT, Marie-Christine BATUT pour leur accueil chaleureux et leur bonne humeur.

(6)

Introduction

Dans le cadre de l’UE Stage de la licence informatique, j'effectue mon stage, pour 4 mois, à l’INRA (Institut National de Recherche Agronomique) de Toulouse au sein de l’unité GenPhySE (Génétique, Physiologie et Systèmes d’Élevage). Et plus précisément dans l'équipe Informatique & Automatisme.

Mon stage : « Mise en place de l’historique sanitaire pour le système d’information CaSaME (Carnet Sanitaire Multi Espèces) » a pour objectif d'intégrer, dans le système d'information, des données sanitaires issues de diverses sources. Il fait donc appel à des compétences en base de données, analyse, et programmation orientée objet. Pour cela, je mets en pratique les connaissances acquises à l'université et en auto-apprentissage.

Il est à noter que le suivi de stage est mené à l'aide de la méthode agile Scrum, ce qui m'apporte une première expérience d'une méthode de gestion de projet.

J'aborderai dans ce rapport, tout d’abord une présentation de l’INRA et plus particulièrement de l’équipe Informatique et Automatisme située au sein de l'unité

GenPhySE dans laquelle j'effectue mon stage ensuite une présentation détaillée du sujet de stage. Puis je continuerai en présentant la méthodologie de travail utilisée ainsi que les détails du travail réalisé. Je conclurai en faisant un bilan personnel et un bilan pour l'entreprise.

(7)

I

Présentation de l’entreprise

1

1

INRA

INRA

L'Institut national de la recherche agronomique (INRA) est un organisme français de recherche en agronomie ayant le statut d’Établissement public à caractère scientifique et technologique (EPST), et sous la double tutelle du ministère chargé de la Recherche et du ministère chargé de l’Agriculture.

Premier institut de recherche agronomique en Europe et deuxième dans le monde en nombre de publications en sciences agricoles et en sciences de la plante et de l'animal, l'INRA mène des recherches finalisées pour une alimentation saine et de qualité, pour une agriculture durable, et pour un environnement préservé et valorisé.

Avec plus de 850 chercheurs, ingénieurs et techniciens INRA, dont 600 titulaires, le centre de Toulouse Midi-Pyrénées représente environ 10 % des publications et près de 12 % des brevets de l'INRA.

La mission de l'INRA est d'associer science et technologie afin d'améliorer les techniques de l'agriculture et de l'élevage en France.

Aujourd'hui, les travaux de recherche de l'INRA se consacrent sur trois domaines, inter-dépendants : l'agriculture, l'alimentation et l'environnement. L'ambition des travaux de l'INRA est de développer une agriculture adaptée aux besoins nutritionnels de l'homme tout en étant compétitive et respectueuse de l'environnement.

2

2

Département Génétique Animale (GA)

Département Génétique Animale (GA)

Le Département de Génétique Animale a deux missions principales, d’une part contribuer au progrès des connaissances en génétique et en biologie animale, d’autre part développer les outils d’amélioration génétique des populations animales d'élevage.

Dans le cadre de missions déléguées par le Ministère chargé de l'Agriculture, le Département est responsable de l'évaluation génétique des reproducteurs à partir des bases de données génétiques nationales dont il assure la gestion.

3

3

Unité GenPhySE

Unité GenPhySE

C'est au sein de l'unité GenPhySE que j’effectue mon stage.

Trois unités de recherche du site toulousain ont restructuré leurs forces au sein d’une nouvelle unité depuis le 1er janvier 2014 : Génétique, Physiologie et Systèmes d’Élevage (GenPhySE). Rattachée au département scientifique Génétique Animale (GA), en partenariat avec le département de Physiologie Animale et Systèmes d'Elevage (Phase), elle constitue un pôle de compétences majeur dans le domaine de la génétique animale, de la biologie intégrative et plus globalement des sciences animales.

(8)

Pour tester leurs protocoles de recherches, les chercheurs disposent d'unités expérimentales réparties sur toute la France.

4

4

Équipe informatique et automatisme

Équipe informatique et automatisme

Je travaille au sein de l'équipe informatique et automatisme rattachée à l'unité GenPhySE. Voici un schéma permettant de visualiser la diversité des projets développés par cette équipe :

Ces outils permettent aux unités expérimentales (UE) de faciliter l'enregistrement des données, mais aussi aux chercheurs pour la consultation et l'exploitation de ces données.

Les outils développés ne se résument pas à des logiciels informatiques. Des

automates sont mis au point pour faciliter l'enregistrement des données (ex : automate de pesée, lecteur de code barres).

Voici un schéma résumant l’organisation techniques de ces outils.

(9)

II

Présentation détaillée du sujet

1

1

But du stage

But du stage

Les chercheurs de l’unité GenPhySE définissent des protocoles de recherche qui sont ensuite testés au sein des Unités expérimentales.

Ces unités collectent une grande quantité de données (poids de l'animal, quantité de lait, maladies, etc).

Le projet CaSaME, au sein duquel j'effectue mon stage, gère les données sanitaires issues des unités expérimentales. Ces données sanitaires (produits administrés, ordonnance, date de traitement, type de maladie) doivent obligatoirement être notifiées dans un carnet sanitaire conformément aux réglementations rédigées dans l’arrêté du 5 juin 2000 relatif au registre d'élevage. En effet, à chaque traitement administré, il est primordial d'être très vigilant aux éventuelles répercussions. Il est par exemple nécessaire de savoir quelle est la durée d'attente après un traitement sur une poule pour que ses œufs redeviennent consommables.

Pour les unités expérimentales de l'INRA, ces données peuvent maintenant être saisies sur l’application CaSaME. Mais avant que cette application soit opérationnelle, chaque unité stockait ces données dans différents systèmes d'informations. Certaines d'entre elles les enregistraient dans des fichiers Excel, d’autres dans des bases de données Oracle, d’autres dans des bases de données MySql, etc.

La première partie de mon travail consiste donc à analyser toutes ces données provenant de sources externes afin de trouver un moyen d’intégrer ces informations, à l’aide de scripts, dans la base de données CaSaME.

La deuxième partie consiste à intégrer un module graphique à l’application CaSaME qui permettra de consulter ces données historiques le plus efficacement et le plus

(10)

2

2

Analyse et intégration de base de données

Analyse et intégration de base de données

Cette partie est assurément celle qui demande la plus grande quantité de travail. En effet, je dois trouver un moyen pour intégrer les données de différentes sources

hétérogènes (Excel, csv, Oracle, ...) au sein de la BD de CaSaME.

Énormément de données sont à intégrer, il est donc bien sûr impossible de faire ce travail à la main. Il y a nécessité de réfléchir à des scripts d'intégration pour chaque type de BD. Ces scripts, élaborés à partir de la base de développement, sont ensuite exécutés sur la base de Recette (base de données utilisée lorsque un projet est en phase de test) pour être validés par les utilisateurs, et pour finir, sur la base de production, lorsque tout sera validé.

3

3

Interface graphique

Interface graphique

Migrer les données sans pouvoir les consulter via une IHM , rend l'information difficilement accessible pour les chercheurs ou animaliers, d’où l'importance d'intégrer un nouveau module à l'application CaSaME, pour permettre à l'utilisateur de les visualiser.

De plus, vue la très grande quantité de données, il est essentiel de mettre en place des filtres pour que l'utilisateur puissent accéder à ce qu'il recherche le plus efficacement possible.

(11)

III

Technologies utilisées

Je vais dans cette partie, détailler les langages de programmation et outils utilisés pendant ce stage.

1

1

SQL

SQL

Nous verrons dans un prochain chapitre que la manipulation de base de données relationnelles est une partie majeure du stage. C'est pour cela que le langage SQL est très présent dans ce stage.

1.1 MySql

MySql est un SGBD (Système de Gestion de Base de Donnée) OpenSource qui est très utilisé autant par des particuliers que par des professionnels. La base de données de CaSaME est une BD de ce type.

1.2 Oracle

Certaines sources de données que je dois intégrer à la BD de CaSaME sont gérées sur ORACLE. Je suis donc amené à travailler sur ce type de base de donnée.

1.3 SQuirreL SQL Client

L'outil utilisé pour visualiser ou modifier des colonnes SQL est Squirrel SQL. C'est un client java graphique, OpenSource qui utilise les librairies JDBC (Java Database Connectivity) pour se connecter à tous les moteurs de bases de données.

(12)

On peut remarquer sur cette image, que l'interface est très simple d'utilisation. Il est possible d'accéder à une base de données facilement. Il en va de même pour lister les tables, des informations détaillées sur chaque colonne d'une table, ou encore le contenu d'une des tables.

2

2

C#

C#

2.1 Visual Studio 2010

Microsoft Visual Studio est une suite de logiciels de développement pour Windows conçue par Microsoft.

Visual Studio est un ensemble complet d'outils de développement permettant de générer des applications bureautiques, des applications Web, des services Web ou encore des applications mobiles.

Visual Basic, Visual C++, Visual C# et Visual J# utilisent tous le même environnement de développement intégré (IDE) qui leur permet de partager des outils et facilite la création d'outils ainsi que la création de solutions faisant appel à plusieurs langages.

Je n'utiliserai pendant ce stage que Visual C# pour la programmation en C#.

2.2 Framework .net

Le logiciel sur lequel je travaille utilise le framework .NET qui est utilisé dans les systèmes d'exploitations Windows. Il permet de faciliter la tâche aux développeurs en proposant une approche unifiée à la conception d'applications Windows ou web, tout en

(13)

introduisant des facilités pour le développement, le déploiement et la maintenance d'applications.

3

3

Subversion

Subversion

Un logiciel de gestion de versions est indispensable pour un gros projet comme CaSaME. En effet, ce projet a débuté en début 2014, beaucoup de choses ont été développées depuis, c'est pour cela qu'il est nécessaire de garder une trace de toutes modifications. Nous utilisons Apache Subversion (abrégé SVN) qui fonctionne sur le mode client-seveur.

4

4

Nhibernate

Nhibernate

CaSaME utilise l'ORM (object-realtional mapping) Nhibernate (l'équivalent pour .Net du framework java Hibernate). Un ORM est un ensemble de bibliothèques permettant à un programme exploitant une base de données d’exploiter celle-ci sans émettre d'ordres SQL et sans connaître les particularités du SGBD utilisé. Cela a l'avantage de bien séparer la couche logicielle et la couche base de données en utilisant des méthodes objets pour manipuler cette dernière.

5

5

Couche IHM (FrameWork Maison)

Couche IHM (FrameWork Maison)

Je dois intégrer un module « historique sanitaire » dans l'interface graphique de CaSaME. J'utilise pour cela un framework réalisé par mon responsable de stage pour l'interface CaSaME. C'est un framework facile à prendre en main qui facilite le

développement de certaines fonctionnalités et permet de faire un module en accord avec ce qui a déjà été fait.

6

6

Charte ergonomique

Charte ergonomique

Le Cati Sicpa, groupe d'informaticiens des départements de GA (Génétique Animale) et PHASE (Physiologie Animale et Système d’Élevage) dont le but est d'apporter une certaine cohérence entre les différents systèmes d'informations développés, ont mis en place une charte ergonomique. Chaque application développée doit ainsi avoir des éléments en commun, comme par exemple les types de boutons, formulaires ou encore navigations utilisés. Cela permet ainsi aux utilisateurs des différentes applications de pouvoir s'y retrouver facilement lorsque ils passent d'un logiciel à un autre.

Je dois donc respecter cette charte pour toutes les réalisations d'interface graphique.

7

7

Moyens à disposition

Moyens à disposition

Dès mon arrivée, j'ai eu à disposition un bureau avec un poste de travail équipé des outils cités précédemment. Ainsi qu'un compte LDAP (Lightweight Directory Access Protocol) qui permet d’accéder à la messagerie (ce qui a facilité les échanges avec les membres de l'unité, car ces derniers communiquent majoritairement par mails), à l'intranet de l'INRA, etc.

(14)

IV

Organisation

1

1

Méthode de travail

Méthode de travail

Au cours de mon stage, j'ai appris à travailler en utilisant des méthodologies de travail en équipe. J'ai ainsi découvert le fonctionnement d'une méthode agile et plus

particulièrement, la méthode Scrum. Nous n'avons pas simplement suivi cette méthode à la lettre, mais nous l'avons adaptée pour fonctionner avec une équipe de deux personnes.

1.1 Méthodes Agiles

Beaucoup d'informaticiens ne supportaient plus les méthodes dites

« traditionnelles ». Elles attendent généralement du client, en début de réalisation, une expression détaillée et validée du besoin. Il faut alors se rapporter aux spécifications de départ, alors qu'il n'est pas rare que le client ait des difficultés à exprimer son désir ou alors qu'il découvre que certaines fonctionnalités demandées sont inutiles.

Les méthodes Agiles s'opposent totalement à ce genre de méthodes. L'approche Agile, au contraire des méthodes traditionnelles, implique le client tout au long du projet. Elle considère que le besoin ne peut être figé et propose de s’adapter aux changements de ce dernier.

L'idée consiste à se fixer des petits objectifs à courts termes. Ce qui permet de s'adapter à tous types de changements. Il faut donc, qu'au départ, le client donne sa vision du produit à réaliser et liste les fonctionnalités prioritaires à développer, à l’équipe de développement en communiquant directement avec elle.

L'équipe choisira ensuite quelques unes de ces fonctionnalités à réaliser dans une portion de temps courte appelée itération. À la fin de chaque itération, l'équipe doit montrer au client un produit partiel mais utilisable. Ce qui permet au client d'affiner ses besoins.

Les points communs entre toutes les méthodes Agiles sont décrites dans le Manifeste d'Agile rédigé en 2001.

Pendant ce stage, nous utilisons la méthode Scrum qui est de loin la méthodologie la plus utilisée parmi les méthodes Agiles existantes.

(15)

1.2 Scrum

On s’aperçoit en regardant cette illustration, qu'il n'y a que 3 rôles différents : • Le Product Owner (propriétaire du produit) : Ils représentent les

clients et les utilisateurs au sein de l'équipe. C'est lui qui est chargé de définir les besoins du produit aux membres de l'équipe, d'établir l'ordre dans laquelle les différentes fonctionnalités seront

développées mais aussi de prendre les décisions importantes concernant l'orientation du projet.

Scrum Master : Il a pour responsabilité d'aider chaque membres de l'équipe à travailler de façon autonome et à s'améliorer

continuellement. C'est lui qui anime les réunions. • Équipe de développeurs : L'équipe est auto-organisée,

pluridisciplinaire et a pour devoir de livrer à chaque fin d'itération une nouvelle version de l'application enrichie de nouvelles fonctionnalités Dans le cas de notre équipe de deux personnes (mon responsable de stage Alexandre Journaux et moi-même), nous avons du adapter la méthode. M. Journaux joue le rôle du Product Owner et du Scrum Master alors que j'interviens en tant que développeur.

Passons maintenant, aux différentes étapes de la méthode Scrum.

(16)

Impact Mapping :

Pour nous aider à identifier les différentes fonctionnalités à mettre en place, nous avons fait un Impact Mapping en début de stage. Cette carte donne une représentation du produit sous une forme synthétique. Elle permet de répondre aux questions : Pourquoi ? Qui ? Comment ? Quoi ?

Cette carte contient :

• A gauche de la carte, son but.

• Au premier niveau, les acteurs y compris les parties prenantes.

• Au deuxième niveau, on trouve les impacts attendus sur ces acteurs pour atteindre le but.

• Au troisième niveau, les features (fonctionnalités, caractéristiques) qui sont la solution à ces impacts.

Backlog

Les features, après avoir été listées à l'aide de l'Impact Mapping, doivent être décomposées en story. Ce sont des travaux à effectuer pour la réussite du projet. Ces story doivent ensuite être placés dans le « bac à sable » en attente d'être estimés. Pour ce faire, nous avons, Mr Journaux et moi, « joué » au planning poker. C'est une façon ludique de

Impact Mapping effectué en début de stage

(17)

produire des estimations sur la complexité des fonctionnalités à développer. Il suffit, pour chaque story, de noter à l'aide de cartes numérotées notre estimation, chacun de notre côté, pour ensuite comparer. Si nous sommes d'accord, on écrit l'estimation sur la story et on la déplace dans le bac de culture. Sinon, on débat jusqu’à trouver un compromis. Les estimations sont relatives les unes des autres.

Quand les estimations sont faites, le Product Owner décide des premières fonctionnalités à réaliser en plaçant des story du « bac de culture » dans le « bac de départ ».

Le Sprint

Le sprint est une courte période (2 semaines, en ce qui nous concerne) pendant laquelle l'équipe doit réaliser plusieurs story, potentiellement livrables. Avant de commencer un sprint, le Product Owner choisit les story à effectuer pendant ce sprint (en les prenant dans le « bac de départ » si celui-ci n'est pas vide). Toutes les story sont ensuite divisées en plusieurs tâches. Chaque sprint doit avoir la même vélocité (somme des estimations)

La méthode Scrum implique d'effectuer une mini-réunion quotidienne. Ces réunions permettent de faire un point sur ce qui a été fait la veille et de suivre l'avancement du sprint. A la fin du sprint, on effectue une réunion de bilan de sprint. Elle permet de vérifier que les objectifs ont bien été atteints, en effectuant une démonstration du travail réalisé à l'équipe (en ce qui me concerne : mon responsable de stage). Nous échangeons ensuite sur les éléments qui ont permis de faire avancer le projet, ainsi de ceux qui l'ont ralenti pour pouvoir progresser lors du sprint suivant.

(18)

Schéma récapitulatif Scrum

2

2

Planning

Planning

Voici le diagramme de Gant de mes 7 premières semaine de stage :

Comme on peut le remarquer, la première semaine a été une semaine de découverte. Pendant cette dernière, mon responsable de stage m'a fait découvrir

l'entreprise et l'équipe informatique de l'unité, et m'a expliqué clairement ce qu'il attendait de moi pendant ce stage. Pendant cette même semaine, Mr Journaux m'a détaillé la

méthode Scrum et expliqué comment le suivi de mon stage allait se faire.

L'analyse et l'intégration de la base de données OVITEL (1re source de données à intégrer), qui seront expliqué dans le prochain chapitre, se sont faits pendant le sprint 1.

(19)

Le script 2, quant à lui, a porté sur la réalisation de l'interface graphique et la mise en place des filtres. J'ai aussi dû commencer la rédaction de ce rapport pendant ce sprint.

Lors du dernier sprint avant la soutenance, j'ai travaillé sur l'analyse et l'intégration d'une nouvelle source de données. Avec en parallèle, la fin de la rédaction du rapport de stage et la préparation de la soutenance.

(20)

V

Travail réalisé

Cette partie me permettra de vous détailler ce que j'ai réalisé pendant ces 8

semaines de stage. Il est à noter que mon stage se finit le 14/08, la problématique de départ n'a donc pas encore été entièrement résolue. Tous les scripts ont été développés en C#.

1

1

Analyse et intégration de la base de données OVITEL

Analyse et intégration de la base de données OVITEL

La première source de données sanitaires que j'ai dû analyser et intégrer à CaSaME est celle d'un élevage d'ovins d'une unité expérimentale de Tours. Avant d'utiliser CaSaME, les données sanitaires étaient enregistrées sur l'application OVITEL (logiciel commercial de gestion de troupeaux d'ovins et caprins). Après avoir exporté ces données, un gros travail de mise au propre de ce fichier a été fait par Alain BOUTTIER (de l'unité de Tours). C'est ce fichier Excel que je dois intégrer à CaSaME :

1.1 Analyse

Avec plus de 17 000 événements sanitaires enregistrés dans ce fichier, il est nécessaire de commencer par une analyse approfondie de ces données.

J'ai commencé par examiner les colonnes et trouver les points communs avec la base de donnée CaSaME (voir l'architecture de CaSaME en annexe).

Voici les différentes informations contenues dans ce fichier pour chaque événement sanitaire :

• numéro animal

(21)

• date de début de traitement • date de fin de traitement

• durée entre la date de début de traitement et de fin de traitement • dose de traitement à administrer

• unité de la dose

• nom du produit à administrer • voie d'administration du produit

• combien de fois par jour le produit doit être administré • à quel fréquence ( ex : tous les deux jours,...)

• famille d’événement ( ex : vaccin, sérum, complément nutritionnel …) • pathologie

• observation effectuée

• nom de la personne intervenante

• fonction de la personne intervenante (ex : vétérinaire)

J'ai d'abord remarqué que CaSaME, mis à part l'identifiant de l'animal (cette information est normalement stockée dans d'autres bases de données, CaSaME ne stocke que la clé primaire permettant de faire le lien avec la base de données correspondante), stocke bien ces informations dans sa base de données, mais bien évidemment dans différentes tables.

Pour faciliter la compréhension je propose de prendre une ligne spécifique du fichier Excel comme exemple :

Ainsi, de nouvelles lignes doivent être rajoutées dans certaines tables de CaSaME. Dans la table EVENEMENT, un enregistrement doit être ajouté pour chaque ligne du fichier Excel.

Dans la table TRAITEMENT, plusieurs enregistrements sont susceptibles d'être ajoutés pour chaque ligne du fichier Excel. J'ai donc établii une formule pour connaître le

(22)

nombre de lignes de traitement : arrondi au supérieur(f 1×duréef 2) ( avec f1 indiquant combien de fois par jour le traitement doit être administré et f2 indiquant à quelle

fréquence le traitement doit être administré). Dans notre exemple, le produit doit être administré 1 fois par jour (colonnes « Fréquence 1 » + « Fréquence 2 ») tous les 3 jours (colonnes « Fréquence 3 » + « Fréquence 4 ») pendant 4 jours (colonne « Durée »), ce qui correspond à 2 traitements à ajouter dans la base ( superieur (1∗43 )=2 ) : 1 le 21/09 et un autre le 24/09.

Dans la table USER, l'intervenant HERVE DENIS doit être rajouté, si il n'existe pas déjà.

Dans la table PHARMACIE, une nouvelle pharmacie doit être crée pour indiquer la provenance des produits utilisés dans cette source de données (OVITEL).

Dans la table VOIE_ADM, la voie d'administration « intramusculaire » doit elle aussi être ajoutée si elle n'est pas présente.

Dans la table UNITE_PROD, l'unité « ml » doit être ajoutée si manquante. La table EVENT_REF, la pathologie « Toxémie de gestation » doit être ajoutée si manquante.

Dans la table PRODUIT, devra être inséré « VOREN SOLUTION INJECTABLE » si inexistant.

(23)

1.2 Intégration

Pour commencer, j'ai d'abord exporté le fichier Excel en fichier csv dans le but de pouvoir traiter ces données à l'aide de scripts.

Il a fallu, ensuite, comme expliqué plus haut, ajouter les produits, pharmacies, unités de produits, voies d’administrations, pathologies et intervenants manquants. Mis à part l'insertion des produits, ces ajouts ont été faits sans l'aide de scripts car CaSaME contenait déjà la plupart de ces informations. En revanche, pour l'insertion des produits, l'écriture d'un programme a été nécessaire en raison de leur nombre important.

Troisièmement, pour lire les données plus facilement et mieux les traiter, j'ai fait un script permettant de mettre ces dernières dans une table temporaire OVITEL préalablement créée. Cette table contiendra donc les informations d'OVITEL, mais aussi des colonnes supplémentaires : produit_id, voie_admID, unitéProd_ID, eventRef_ID, intervenant_id, correspondant aux clés primaires des différentes tables de CaSaME, dans le but, lors de la création de mon dernier script, de faciliter la migration vers ces tables.

Finalement, cette intégration a été conclue par le dernier script développé. Ce script a ainsi utilisé la table temporaire OVITEL pour créer toutes les lignes événements et

traitements.

Voici l'algorithme, très simplifié, du dernier script :

Tant que il reste une ligne d’événement sanitaire à lire Faire

(24)

retour = insererEvenement(ligne) ; // Renvoie la clé obtenue après insertion de l’événement.

insererTraitements(ligne, retour) ; // Calcule le nombre de traitements à insérer et les insère. FIN TQ

2

2

Interface graphique

Interface graphique

L'intégration de la source de données OVITEL dans la base de données CaSaME étant achevée, nous souhaitions faire valider cette intégration par les utilisateurs de ces données. Pour cela, ils ont besoin de pouvoir les consulter à l'aide d'un nouveau module ajouté à l'application CaSaME.

Comme tout autre module de l'application CaSaME, il se fera selon le modèle utilisé par l'explorateur Windows : TreeView-ListView. Voici le résultat :

L'utilisateur commence par choisir une unité de l'INRA, ensuite l'élevage, il a ainsi la liste des événements sanitaires correspondants qui s'affichent. Dans la ListView, on retrouve toutes les informations importantes. Si l'utilisateur clique sur un événement sanitaire, il pourra visualiser la liste des traitements associés.

Après la réalisation de cet affichage, un problème s'est posé. Le temps d'affichage peut être très long selon le nombre d’événements sanitaires à afficher (17111 pour l'UE ovins de Tours). Il y avait donc une nécessité de mettre en place des filtres.

(25)

Une nouvelle fenêtre permettant de filtrer les événements, accessible depuis le menu contextuel, est alors proposée à l’utilisateur. Différents filtres y sont proposés. Le filtre par défaut affiche les 100 plus récents événements sanitaires.

Pour la mise en place de ces filtres, les expressions lambda ont été utilisées. Une expression lambda est une fonction anonyme qui peut contenir des expressions et des instructions. Elle peut ainsi être utilisée pour créer des délégués ou des types

d’arborescence d’expression.

Toutes les expressions utilisent l’opérateur lambda => (se lit « conduit à »). Une expression est toujours constituée de deux parties :

•le côté gauche donne les paramètres d’entrées (s’il y en a), •le côté droit donne les instructions de la méthode anonyme.

Les expressions lambda sont principalement utilisées pour créer des lambda-expressions : il s’agit d’expressions utilisées pour créer des arborescences d’expressions (surtout utilisées pour filtrer des listes). Exemple : si l'utilisateur choisit N°Animal = 1235813, cela se traduit par listeAnimal = listeAnimal.Where(a => a.Num = '1235813'). Voir annexe pour avoir un extrait du code utilisant les lambda-expressions.

(26)

VI

Bilan pour l’entreprise

1

1

Niveau d'atteinte des objectifs

Niveau d'atteinte des objectifs

L'objectif de mon stage est de faire la migration de plusieurs sources de données externes vers la base de données CaSaME et de rajouter un module graphique à l'application CaSaME pour la consultation de ces données. J'ai, jusque là, réalisé la migration d'une source de données provenant du logiciel OVITEL et le module graphique en question.

L'interface graphique déjà réalisée, le reste de mon stage (stage de 4 mois) se concentrera sur la migration vers CaSaME des autres sources de données hétérogènes. Ayant assimilé la base de données CaSaME et réalisé quelques scripts d'intégration, la migration de nouvelles sources de données devrait se faire avec plus de facilité que pour celle d'OVITEL. Les objectifs de mon stage ont ainsi de forte chance d'être atteints.

2

2

Apport du travail réalisé

Apport du travail réalisé

Jusqu'à l'arrivée de CaSaME, chaque utilisateur, avait une façon propre, d'enregistrer les données sanitaires de leur élevage (fichier Excel, oracle ou autre). Ils saisissent désormais les événements sanitaires avec l'outil CaSaME, mais pour la consultation de leurs données antérieures, ils devaient jongler entre leurs anciens outils et CaSaME. A la fin du stage, les utilisateurs (chercheurs, animaliers, etc) pourront accéder à tout leur historique sanitaire directement via CaSaME.

(27)

VII

Bilan Personnelle

1

1

Enseignements appris à l'université, utilisés lors du stage

Enseignements appris à l'université, utilisés lors du stage

Au cours de ce stage, de nombreux enseignements reçus dans le cadre de la licence informatique, m'ont été utiles.

Tout d'abord les cours de bases de données ont été essentiels. Comme vous avez pu le remarquer, ce stage est très porté sur la manipulation de base de données.

L'apprentissage du langage SQL n'a pas été la seule partie utile, les cours de L2 sur la conception de base de données l'ont été tout aussi.

La réalisation de scripts c# ou d'interfaces graphiques ont fait appel à mes

connaissances en langage objet. Même si le langage utilisé (C#) n'est pas le même que celui appris en licence (JAVA), la transition a été assez facile en raison de la forte similitude entre ces deux langages.

L'aspect analyse et algorithmique, présent dans quasiment tous les cours de la formation, m'ont permis de trouver rapidement des solutions performantes aux problèmes algorithmiques.

2

2

Apprentissage de nouveaux outils en période de stage

Apprentissage de nouveaux outils en période de stage

Beaucoup de nouveaux outils ont été utilisés pendant ce stage, ce qui m'a permis de tester ma capacité d'adaptation à un nouvel environnement de travail. Cette adaptation s'est faite assez rapidement, ceci est sans doute dû aux changements fréquents d'outils au cours de la licence et aux explications de mon maître de stage en cas de besoins.

3

3

Apport au projet professionnel

Apport au projet professionnel

Mon projet futur, faire de la recherche en Intelligence Artificielle, requiert des

compétences diversifiées et une certaine autonomie dans l'apprentissage de ces derniers. Ce stage me permet d'élargir mon spectre de compétences même si elles ne sont pas

directement liées à l'intelligence artificielle. De plus, j'ai découvert une nouvelle méthode de travail, la méthode Scrum, qui me sera sûrement utile, peu importe le domaine dans lequel je travaillerai.

(28)

Conclusion

Ainsi, j'ai effectué jusque là 7 semaines de stages à l'INRA. Ce début de stage s'est avéré être très enrichissant pour mon expérience professionnelle, aussi bien sur l'aspect technique que sur l'aspect humain.

En effet, avant de commencer ce stage, j'étais impatient de pouvoir mettre en pratique les connaissances techniques, acquises pendant ma formation. Après quelques semaines de stage, je me suis rendu compte que ce dernier m'apportait bien plus que cela. En plus de mettre en pratique mes connaissances et d'utiliser une nouvelle méthode de gestion de projet, j'ai pu découvrir le monde de l’entreprise, la relation

utilisateur-développeur, l'entraide entre collègues, mais aussi l'utilité d'une entreprise publique comme l'INRA.

D'autre part, je ne suis qu'a la moitié de mon stage. Le module que j'ai développé est passé en test, et passera en production lorsque les utilisateurs l'auront validé. De plus, la suite du stage me permettra d'approfondir mon expérience sur les connaissances déjà acquises. Pour le reste de mon stage, je vais continuer d'analyser et intégrer différentes sources de données hétérogènes tout en continuant à travailler en méthode Scrum.

Il est vrai que je souhaite me tourner vers la recherche, mais il était important pour moi de découvrir les différents aspects du métier d'informaticien.

(29)

Glossaire

BD : Base de Données

CaSaME : Carnet Sanitaire Multi-Espèces

CTIG : Centre de Traitement de l'Information Génétique GenPhySE : Génétique, Physiologie et Systèmes d’Élevage INRA : Institut National de la Recherche Agronomique MLD : Modèles Logiques de Données

ORM : Object-Relational Mapping

UE : Unités Expérimentales UR : Unité de Recherche

(30)

Références

http://www.toulouse.inra.fr/Le-centre-Les-recherches/unites-de-recherche/GenPhySE/ %28key%29/5 http://fr.wikipedia.org/wiki/Institut_national_de_la_recherche_agronomique http://www.ga.inra.fr/Le-departement-Les-recherches/Objectifs-missions-evaluation http://fr.wikipedia.org/wiki/Microsoft_Visual_Studio#Visual_Studio_2010 http://fr.wikipedia.org/wiki/Framework_.NET http://www.agiliste.fr/fiches/introduction-methodes-agiles/ www.aubryconseil.com/ http://fr.wikipedia.org/wiki/Mapping_objet-relationnel http://tahe.developpez.com/dotnet/nhibernate/ https://www.dotnetdojo.com/guide-expressions-lambda-csharp/

(31)

Annexe Technique

MLD CaSaME

(32)

Code utilisant les lambda-expressions

Figure

Tableau de sprint

Références

Documents relatifs

Identification du système de refroidissement (Schéma daté et implantation joint en annexe) Localisation de l’installation : (terrasse, sol,...)Domaine d’utilisation :

Ce groupe, géré par le Service de l’information sanitaire de l’OIE, comprend des représentants officiels des Pays membres de toutes les régions du globe, gérant les

Léa et Zoé sont deux cousines. On sait que la somme de l’âge de Zoé et du double de l’âge de Léa est 25 ans... Ecrire l’équation qui traduit

Des index médicaux régionaux sont en cours d'établissement dans les Régions des Amériques (LILACS), de la Méditerranée orientale (IMEMR), de l'Asie du Sud-Est (IMSEAR) et

On peut cependant noter qu’étant donné que la grande majorité des opérations sont effectuées envers des sociétés du groupe, et que la vaste majorité de l’actif de

On souhaite disposer d'une interruption dite « système » permettant d'interrompre les applications toutes les 10 millisecondes pour effectuer des mises à jour de variables système

Le système de polyculture élevage testé de 2011 à 2016 avait été conçu dans l’objectif de créer des références pour améliorer la triple performance des systèmes

Chacun, en fonction de ses compétences de lecteur, du degré de difficulté du livre choisi, de la masse textuelle à lire (les romans proposés étaient tous plus denses que les