• Aucun résultat trouvé

Mise en place de l'historique sanitaire pour le système d'information Sicpa Sanitaire

N/A
N/A
Protected

Academic year: 2021

Partager "Mise en place de l'historique sanitaire pour le système d'information Sicpa Sanitaire"

Copied!
33
0
0

Texte intégral

(1)

HAL Id: hal-02795990

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

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 Sicpa Sanitaire

Abdelhadi Temmar

To cite this version:

Abdelhadi Temmar. Mise en place de l’historique sanitaire pour le système d’information Sicpa Sani-taire. Sciences du Vivant [q-bio]. 2015. �hal-02795990�

(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 routes de Narbonne

(3)

Table des matières

Remerciement...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 Technologie utilisés...8 1 SQL...8 1.1 MySql...8 1.2 Oracle...8 1.3 SQuirreL SQL Client...8 2 Web Services...9 3 C#...9 3.1 Visual Studio 2010...9 3.2 Framework .net...10 4 Subversion...10 5 Nhibernate...10

6 Couche IHM (FrameWork Maison)...10

7 Charte ergonomique...10

8 Moyens à disposition...11

III Présentation détaillée du sujet...12

1 But du stage...12

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

3 Interface graphique...13 IV Organisation...14 1 Méthode de travail...14 1.1 Méthodes Agiles...14 1.2 Scrum...15 2 Planning...18 V Travail réalisé...20

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

(4)

1.2 Intégration...23

2 Interface graphique...24

VI Bilan pour l’entreprise...26

1 Niveau d'atteinte des objectifs...26

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

VII Bilan Personnelle...27

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

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

3 Apport au projet professionnel...27

Conclusion...28

Glossaire...29

Bibliographie...30

Annexe Technique...31

MLD CaSaME...31

(5)

Remerciement

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 de m'avoir épaulé tout le 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.

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

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

Sans oublier les autres membres de GenPhySE tel 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 sanitaire 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 à la FAC 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 qu les détails du travail réalisé. Je conclurai en faisant un bilan personnel et en explicitant l’utilité de mon stage pour l’INRA.

(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 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 dispose 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émas 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 bar).

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

(9)

II

Technologie utilisés

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 la partie suivante que la manipulation de base de donnée relationnelle 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 une SGBD (Système de Gestion de Base de Donnée) OpenSource qui est très utilisée autant par des particuliers que par des professionnels. La base de donnée 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 sur ORACLE. Je suis donc amené à travailler 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.

(10)

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ée facilement. Il en va de même pour lister les tables, des informations détaillées sur chaque colonnes d'une table, ou encore le contenu d'une des tables.

2

2

Web Services

Web Services

Chaque application développée par l'équipe informatique de l'unité GenPhySE enregistrent les données sur des bases de données différentes. Mais potentiellement, il est possible qu'un logiciel ait besoin d'informations stockés sur des bases de données externes. CaSaME était dans cette problématique là, elle avait besoin d'avoir la liste des animaux vivants par élevage. Un ensemble de Web Services a donc été mis en place, qui permet de ne pas être intrusif au niveau base de données et de laisser chacun décider des informations à partager.

3

3

C#

C#

3.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.

(11)

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 et facilite la création de solutions faisant appel à plusieurs langages.

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

3.2 Framework .net

Le logiciel sur lequel je travail 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'application Windows ou web, tout en introduisant des facilités pour le développement, le déploiement et la maintenance d'applications.

4

4

Subversion

Subversion

Un logiciel de gestions de versions est indispensable pour un gros projet comme CaSaME. Nous utilisons Apache Subversion (abrégé SVN) qui fonctionne sur le mode client-seveur.

5

5

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és. Ça a l'avantage de bien séparer la couche logiciel et la couche base de donnée en utilisant des méthodes objets pour manipuler cette dernière.

6

6

Couche IHM (FrameWork Maison)

Couche IHM (FrameWork Maison)

Je dois intégrer un module « historique sanitaire » dans l'interface graphique. 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.

7

7

Charte ergonomique

Charte ergonomique

Le Cati Sicpa, groupe d'informaticiens des départements de GA (Génétique Animal) 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 communs, comme par exemple les types de boutons, formulaires ou encore navigations utilisées. Ça 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 réalisations d'une interface graphique.

(12)

8

8

Moyens à disposition

Moyens à disposition

Dès mon arrivée, j'ai eu a 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.

(13)

III

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 seins 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 éventuels 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

(14)

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, oracale, ...) 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 pour être validé 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.

(15)

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 suivit cette méthode à la lettre, mais nous l'avons adapté 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 Agile existantes.

(16)

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), nous avons du adapter la méthode. Mr Journaux joue le rôle du Product Owner et du Scrum Master alors que j'interviens en tant que développeur.

(17)

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 :

• Au centre 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és 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

(18)

produire des estimations sur la complexité des fonctionnalités à développer. Il suffit, pour chaque story, de noter à l'aide de carte numérotée 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 Poduct Owner choisit les story à effectuer pendant ce sprint (en les prenants 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 travaille réalisé à

l'équipe (en ce qui me concerne : mon responsable de stage). Nous échangeons ensuite sur les éléments qui ont permit de faire avancer le projet, ainsi de ceux qui l'ont ralentit pour pouvoir progresser lors du sprint suivant.

(19)

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ée 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ée OVITEL (1ère source de données à intégrer), qui sera expliqué dans le prochain chapitre, se sont faits pendant le sprint 1.

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

(20)

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

(21)

V

Travail réalisé

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

semaines de stages. Il est à noté que mon stage se finit le 14/08, la problématique de départ n'a donc pas encore été entièrement résolu. Tout les scripts ont été développé 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 sanitaire que j'ai du 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 troupeau 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 être intégré à CaSaME :

1.1 Analyse

Avec plus de 17 000 événements sanitaire enregistré dans ce fichier, il est nécessaire de commencer par une analyse approfondis 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 animale

• numéro lot (si le traitement a été fait sur un lot d'animaux) • date de début de traitement

(22)

• 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 : tout 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, mise à part l'identifiant de l'animal (cette

information est normalement stocké 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 ligne doivent être rajouter dans certaines tables de CaSaME. Dans la table EVENEMENT, un enregistrement doit être ajouter pour chaque ligne du fichier Excel.

Dans la table TRAITEMENT, plusieurs enregistrements sont susceptibles d'être ajouter pour chaque ligne du fichier Excel. J'ai donc établit une formule pour connaître le nombre de ligne de traitement : arrondis au supérieur (f 1×duréef 2) ( avec f1 indiquant

(23)

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.

1.2 Intégration

(24)

Pour commencer, j'ai d'abord exporter 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é fait sans l'aide de script car CaSaME contenait déjà la plus part 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émentaire : 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

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

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

FIN TQ

2

2

Interface graphique

Interface graphique

L'intégration de la source de donnée 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 autres modules de l'application CaSaME, il se fera selon le modèle utilisé par l'explorateur Windows : TreeView-ListView. Voici le résultat :

(25)

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 cette affichage, un problème s'est posé. Le temps d'affichage peut être très long selon le nombre d’événement sanitaire à afficher (17111 pour l'UE ovins de Tours). Il y avait donc une nécessité de mettre en place des filtres.

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

(26)

Pour la mise en place de ces filtres, les expressions lambda ont été utilisés. 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é pour créer des lambda-expression : il s’agit d’expression qui sont utilisée pour créer des arborescences d’expressions (surtout utilisé 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.

(27)

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éaliser la migration d'une source de donnée 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ène. 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 enregistrait les données sanitaires de leur élevage de leur propre façon (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.

(28)

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é 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 script c# ou d'interfaces graphiques ont fait appels à 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 permit de trouver rapidement 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 permet de tester ma capacité d'adaptation à un nouveau environnement de travail. Cette adaptation s'est faite assez rapidement, sans doute du 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 Artificiel, 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 il 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, peut importe le domaine dans lequel je travaillerai.

(29)

Conclusion

Ainsi, j'ai effectué jusque là 7 semaines de stages à l'INRA. Ce début de stage s'est avéré très enrichissant pour mon expérience professionnel, 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 mes 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 addition 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 suis pour l'instant 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 de 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.

(30)

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 Recherche Agronomique

MLD : Modèles Logiques de Données

ORM : Object-Relational Mapping

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

(31)

Bibliographie

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/

(32)

Annexe Technique

MLD CaSaME

(33)

Code utilisant les lambda-expressions

Figure

Tableau de sprint

Références

Documents relatifs

En utilisant une base de données médicamenteuse indépendante, Thériaque, et une définition standardisée des prescriptions et plus généralement du circuit de

Elles permettent d’optimiser l’utilisation des antimicrobiens en limitant l'utilisation de ces molécules à certains médecins, certains critères ou à des populations spécifiques

Tij- dens de debatten met betrekking tot de wet van 1930 voor loontrekkende werknemers, had de wetgever overwogen eveneens kinderbijslag aan de zelfstandigen toe te ken- nen, maar

Base de données orientée graphe (Graph databases)

Cette requête retourne la longueur du parcours, le dénivelé positif, le dénivelé négatif, la durée du parcours sous format décimal dans les deux sens de la route, la distance

Recoupement de voisinages : approche basée sur les graphes. [Boyer et

Large regions tend to have smaller p-values while small regions tend to have higher percentage of enrichment. → A smaller region included in a more significant one is pertinent if

Candidate gene prioritization by genomic data fusion.. • Observation: more and more post-genomic