<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jbonvill</id>
		<title>Wiki d'activités IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jbonvill"/>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php/Sp%C3%A9cial:Contributions/Jbonvill"/>
		<updated>2026-05-14T05:30:10Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36895</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36895"/>
				<updated>2017-01-05T08:28:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Description du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le torse, et des leds indiqueront par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On réalisera un boitier en imprimante 3D pour la portabilité. &lt;br /&gt;
Il faudra trouver une solution pour &amp;quot;séparer&amp;quot; les bandes leds du module pour le coureur. En effet, l'accéléromètre ne peut pas être placé sur le bras à cause de l'effet balancier qui fausserait les mesures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
 Microcontrôleur : RFduino&lt;br /&gt;
 Capteur : accéléromètre : 10 DOF&lt;br /&gt;
 2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Option_Internet_des_objets_2016/2017&amp;diff=36894</id>
		<title>Option Internet des objets 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Option_Internet_des_objets_2016/2017&amp;diff=36894"/>
				<updated>2017-01-05T08:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Projets ==&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
Ecrivez vos noms sous le format exact &amp;quot;Prénom Nom&amp;quot;, séparez vos noms par des virgules.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| [[Gant de Boxe connecté]] || Stéphane Maia, Romuald Lentieul&lt;br /&gt;
|-&lt;br /&gt;
| [[Fleur de clown connectée]] || Thibault Malherbe, Thibault Giordan&lt;br /&gt;
|-&lt;br /&gt;
| [[Boîte aux lettres connectée]] || Loïc Delecroix, Romain Ruet, Julien Joignaux&lt;br /&gt;
|-&lt;br /&gt;
| [[Ecocup connecté]] || Manon Duboc, Pierre Tang, Hugo Petiot&lt;br /&gt;
|-&lt;br /&gt;
| [[Posto Libero (Table connectée)]] || Cong Chen, Michele Nuzzolese, Nathan Richez&lt;br /&gt;
|-&lt;br /&gt;
| [[Système pour plante connecté]] || Corentin Casier, Victor Charnet&lt;br /&gt;
|-&lt;br /&gt;
| [[Avertisseur nuisances sonores connecté]] || Benjamin Gornadha, Anthony Turpin&lt;br /&gt;
|-&lt;br /&gt;
| [[Dring&amp;amp;Call]] || Vincent Robic, Pierre Michel, Morgan Obeissart&lt;br /&gt;
|-&lt;br /&gt;
| [[Couche pour adulte connectée]] || Baptiste Hendrycks, Joshua Letellier&lt;br /&gt;
|-&lt;br /&gt;
| [[Examen Connecté]] || Sreng Hong, Kemoko Diakite, Alexis Ebrard&lt;br /&gt;
|-&lt;br /&gt;
| [[Capteur d'accélération connecté]] || Julian Bonville, Sonia Nduwayo&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36889</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36889"/>
				<updated>2017-01-05T08:02:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Description du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Description du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le torse (le mouvement de balancier des bras fausserait les mesures), et des leds indiqueront par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
 Microcontrôleur : RFduino&lt;br /&gt;
 Capteur : accéléromètre : 10 DOF&lt;br /&gt;
 2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36888</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36888"/>
				<updated>2017-01-05T08:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Descriptions du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Description du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le torse (le mouvement de balancier des bras fausseraient les mesures), et des leds indiquerons par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
 Microcontrôleur : RFduino&lt;br /&gt;
 Capteur : accéléromètre : 10 DOF&lt;br /&gt;
 2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36887</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36887"/>
				<updated>2017-01-05T08:00:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Cahier des charges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Descriptions du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le torse (le mouvement de balancier des bras fausseraient les mesures), et des leds indiquerons par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
 Microcontrôleur : RFduino&lt;br /&gt;
 Capteur : accéléromètre : 10 DOF&lt;br /&gt;
 2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36885</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36885"/>
				<updated>2017-01-05T08:00:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Cahier des charges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
====Descriptions du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le torse (le mouvement de balancier des bras fausseraient les mesures), et des leds indiquerons par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
 Microcontrôleur : RFduino&lt;br /&gt;
 Capteur : accéléromètre : 10 DOF&lt;br /&gt;
 2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36884</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36884"/>
				<updated>2017-01-05T07:59:57Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Descriptions du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
====Descriptions du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le torse (le mouvement de balancier des bras fausseraient les mesures), et des leds indiquerons par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
 Microcontrôleur : RFduino&lt;br /&gt;
 Capteur : accéléromètre : 10 DOF&lt;br /&gt;
 2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36882</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36882"/>
				<updated>2017-01-05T07:59:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Descriptions du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
====Descriptions du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le torse (le mouvement de balancier des bras fausseraient les mesures), et des leds indiquerons par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
 Microcontrôleur : RFduino&lt;br /&gt;
 Capteur : accéléromètre : 10 DOF&lt;br /&gt;
 2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36881</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36881"/>
				<updated>2017-01-05T07:58:53Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Matériel &amp;amp; Logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
====Descriptions du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
On place le module sur le torse (le mouvement de balancier des bras fausseraient les mesures), et des leds indiquerons par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
 Microcontrôleur : RFduino&lt;br /&gt;
 Capteur : accéléromètre : 10 DOF&lt;br /&gt;
 2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36880</id>
		<title>Capteur d'accélération connecté</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Capteur_d%27acc%C3%A9l%C3%A9ration_connect%C3%A9&amp;diff=36880"/>
				<updated>2017-01-05T07:58:02Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : Page créée avec « ==Cahier des charges== ===Présentation générale du projet=== ====Contexte &amp;amp; Objectif==== Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un cap... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet===&lt;br /&gt;
====Contexte &amp;amp; Objectif====&lt;br /&gt;
Dans le cadre de l'IoT (Internet of Things), nous avons choisi de réaliser un capteur d'accélération avec indicateur led. Les données seront enregistrées et envoyées sur smartphone en bluetooth.&lt;br /&gt;
&lt;br /&gt;
====Descriptions du Projet====&lt;br /&gt;
L'idée est d'acquérir des données sur l'accélération d'une personne ou d'un objet, et d'en recevoir un compte rendu sur son smartphone.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un sportif, pour un footing par exemple :&lt;br /&gt;
On place le module sur le torse (le mouvement de balancier des bras fausseraient les mesures), et des leds indiquerons par code couleur si l'accélération est bien nulle, donc vitesse constante, ou si le coureur est irrégulier.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un automobiliste :&lt;br /&gt;
On place le module sur le tableau de bord, les leds indiquent par code couleur si on accélère ou freine trop fort. Avec le compte rendu envoyé sur smartphone, on est en mesure de comparer plusieurs trajets effectués, et d'améliorer sa conduite. C'est le principe des derniers contrats d'assurance auto proposés.&lt;br /&gt;
&lt;br /&gt;
====Matériel &amp;amp; Logiciel====&lt;br /&gt;
Microcontrôleur : RFduino&lt;br /&gt;
Capteur : accéléromètre : 10 DOF&lt;br /&gt;
2 bandes de 8 leds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le programme sera dans un premier temps effectué sur l'IDE Arduino, puis retranscrit en C si un gain de consommation s'avère possible.&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Option_Internet_des_objets_2016/2017&amp;diff=36864</id>
		<title>Option Internet des objets 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Option_Internet_des_objets_2016/2017&amp;diff=36864"/>
				<updated>2017-01-05T07:27:20Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Projets ==&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
Ecrivez vos noms sous le format exact &amp;quot;Prénom Nom&amp;quot;, séparez vos noms par des virgules.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| [[Gant de Boxe connecté]] || Stéphane Maia, Romuald Lentieul&lt;br /&gt;
|-&lt;br /&gt;
| [[Fleur de clown connectée]] || Thibault Malherbe, Thibault Giordan&lt;br /&gt;
|-&lt;br /&gt;
| [[Boîte aux lettres connectée]] || Loïc Delecroix, Romain Ruet, Julien Joignaux&lt;br /&gt;
|-&lt;br /&gt;
| [[Ecocup connecté]] || Manon Duboc, Pierre Tang, Hugo Petiot&lt;br /&gt;
|-&lt;br /&gt;
| [[Posto Libero (Table connectée)]] || Cong Chen, Michele Nuzzolese, Nathan Richez&lt;br /&gt;
|-&lt;br /&gt;
| [[Système pour plante connecté]] || Corentin Casier, Victor Charnet&lt;br /&gt;
|-&lt;br /&gt;
| [[Avertisseur nuisances sonores connecté]] || Benjamin Gornadha, Anthony Turpin&lt;br /&gt;
|-&lt;br /&gt;
| [[Dring&amp;amp;Call]] || Vincent Robic, Pierre Michel, Morgan Obeissart&lt;br /&gt;
|-&lt;br /&gt;
| [[Couche pour adulte connectée]] || Baptiste Hendrycks, Joshua Letellier&lt;br /&gt;
|-&lt;br /&gt;
| [[Examen Connecté]] || Sreng Hong, Kemoko Diakite, Alexis Ebrard&lt;br /&gt;
|-&lt;br /&gt;
| [[Capteur d'accélération connecté]] || Julian Bonville, Sonia &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2016/2017&amp;diff=33810</id>
		<title>Projets IMA5 2016/2017</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2016/2017&amp;diff=33810"/>
				<updated>2016-09-29T15:03:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapports finaux&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Vidéo&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P1 Automatisation de tests de validation d'un logiciel embarqué]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas ROJ / Maxime SZWECHOWIEZ &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole) / Julien SPANNEUT (SNCF) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P7 Régulation temps réel sur réseau sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Morgan OBEISSART / Vincent ROBIC &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P14 Conversion DC-DC à liaison AC et circuit L-C-L]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Nicolas WEGRZYN&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Philippe DELARUE&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P15 Entreprise : Développement d'une application iOS et Android ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Loïc DELECROIX / Julien JOIGNAUX &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole) / Béatrice CADET (entreprise) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P16 Réaliser deux trackers GPS permettant de suivre à distance le trajet d'un coureur ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Valentin Taffin / Alexandre Cuadros &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas Vantroys (Ecole) / Alexandre Boé (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P19 Relai Ethernet Lora ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Cong CHEN / Sonia NDUWAYO &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P23 Poste ébavurage de pièces plastiques  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Corentin CASIER / Jordan RAZAFINDRAIBE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise Conrard (Ecole) / L. HAAG (Entreprise) / R. DAVID (Entreprise) / B. MASSART (Entreprise)  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P24 Contrôle qualité de la production de pièces plastiques  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Alex JULITA / Matthier HERWEGH &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise Conrard (Ecole) / L. HAAG (Entreprise) / R. DAVID (Entreprise) / B. MASSART (Entreprise)  &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P31 Partition HTTP/TLS pour Pepin]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Mageshwaran SEKAR &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Julien IGUCHI-CARTIGNY&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P39 Ajouter de nouvelles interactions à la solution Tezeos  ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Nathan RICHEZ &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Samuel Tranchet (Entreprise) / Thomas Vantroys (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P44 Identification d'un robot mobile ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Michel MIKHAEL &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Midzodzi PEKPE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P47 Développement d'une interface cerveau-ordinateur ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Victor CHARNET &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; C. Lecocq (Ecole) F. Cabestaing (Labo) A. Depres (Labo)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P56 Robot testeur de club de golf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Joshua LETELLIER &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Rochdi MERZOUKI (Ecole) / Guillaume DEWAELE (Entreprise) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P57 Robotisation d'un poste de production de pièces à base de fil métallique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Audrey AFFOYON &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Blaise CONRARD &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P59 Popsell : application mobile]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Quentin GRUSON &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas VANTROYS (Ecole) / François Vandeplanque (Popsell) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P61 Jeux d'aventure grandeur nature ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; MAIA Stéphane / LENTIEUL Romuald &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; GAPAS / Thomas Vantroys (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;[[P64  Sécurité de l'IOT ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Cédric DUVAL &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Thomas Vantroys (Ecole) / Alexandre Boé (Ecole) / SNCF&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[P20 Conception d'un périphérique USB de type &amp;quot;gadget&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Florian Giovannangeli &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Xavier Redon (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;[[P54 Robot assisté par vision pour le tri de pièces métalliques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Julian BONVILLE &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Rochdi MERZOUKI (Ecole) &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Matériel nécessaires ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;P15&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;2 téléphones Android&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2014/2015&amp;diff=21149</id>
		<title>Projets IMA4 SC &amp; SA 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2014/2015&amp;diff=21149"/>
				<updated>2015-05-11T20:31:21Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Notes sur les projets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Encadrants école !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[Brique Lego augmentée]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon / Emmanuelle Pichonat &lt;br /&gt;
| Alex JULITA / Déborah SAUNDERS &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Tracabilité hopital|Amélioration de la traçabilité en milieu hospitalier]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Julian BONVILLE / François ROCHE&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Vêtements intelligents]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Alexander BOWN / Valentin PIAT&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Malette Arduino éducative I]]&lt;br /&gt;
| Emmanuelle Pichonat / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Yuqian HU&lt;br /&gt;
|-&lt;br /&gt;
| P10bis [[Malette Arduino éducative II]]&lt;br /&gt;
| Emmanuelle Pichonat / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Mehmet ILTER&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[Fabricarium - partage simplifié]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon / Rodolphe Astori&lt;br /&gt;
| Jérémie DENECHAUD / Julien HERIN &lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Art embarqué]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Thibaut SCHOLAERT / Jean-michel TOURNIER&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[Aimant intelligent]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Louis THEBAULT / Bertrand YVERNAULT&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[Thetweekproject|Machine à café]]&lt;br /&gt;
| Xavier Redon &lt;br /&gt;
| Jean WASILEWSKI / Pierre LETOUSEY&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[Drone autonome]]&lt;br /&gt;
| Xavier Redon &lt;br /&gt;
| Kévin COLAUTTI / Benjamin LEFORT&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[Balise de suivi de polluant]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Maxime MORISSE / Timothée TENEUR&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Réseau informatique et musique]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Mageshwaran SEKAR	 &lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Motorisation d'un véhicule électrique]]&lt;br /&gt;
| Walid Boughanmi&lt;br /&gt;
| Shuai HE / Quentin SULTANA&lt;br /&gt;
|-&lt;br /&gt;
| P24 [[Dé électronique communiquant]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Corentin DUPLOUY / Méhdi ZEGGAI&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[Synthetiseur]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Alexis VINOT / Lu XIA&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[e-theremin ]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Louis CHAUCHARD / Romain IMBERT&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Dessin 3D|Dessin 3D en environnement immersif]]&lt;br /&gt;
| Laurent Grisoni&lt;br /&gt;
| Alexandre JOUY / Romain LIBAERT&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[Visualisation Open Data]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon&lt;br /&gt;
| Elise TISSOT / Beatriz ODRIOZOLA&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[Surveillance passive du sommeil]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Jérôme BAILET / Manouk SIMON&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Robot déformable|Console de contrôle pour robot déformable]]&lt;br /&gt;
| Jérémie Dequidt&lt;br /&gt;
| Ghada ELBEZ / Céline TIRABY&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[RoboCup 2015]]&lt;br /&gt;
| Vincent Coelen / Rochdi Merzouki&lt;br /&gt;
| Sandra HAGE CHEHADE / Cyril SMAGGHE&lt;br /&gt;
|-&lt;br /&gt;
| P36 [[RoboCup 2015 - Pyro Team]]&lt;br /&gt;
| Vincent Coelen / Rochdi Merzouki&lt;br /&gt;
| Thomas DANEL / Romain KRIKORIAN &lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interaction Homme Robot]]&lt;br /&gt;
| Emmanuelle Grangier / Rochdi Merzouki&lt;br /&gt;
| Arnaud DESHAYS / Flavien ROYER&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
* P6 : Olimex platine ECG&lt;br /&gt;
&lt;br /&gt;
==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Mini-cahier des charges || Mi-parcours || Fin de parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[Brique Lego augmentée]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki à jour. Déjà une réalisation (3 briques). Veillez à équilibrer le travail et à rendre compte systématiquement à l'encadrant.&lt;br /&gt;
| Wiki à jour permettant de suivre l'état d'avancement du travail. Bien !&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 23/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Tracabilité hopital|Amélioration de la traçabilité en milieu hospitalier]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki assez complet. Capture des datamatrix avancé. Passez-vous de l'utilitaire &amp;lt;tt&amp;gt;motion&amp;lt;/tt&amp;gt;. Il faut penser à concevoir l'application Web (base de données et interface). Quelles technologies Web comptez-vous utiliser ?&lt;br /&gt;
| Wiki presque à jour. Vous auriez pu mettre un mot de votre réalisation d'un serveur WebSocket. Diminuez la taille de vos captures d'écran pour rendre la lecture du Wiki plus agréable.&lt;br /&gt;
|Oui&lt;br /&gt;
|[[Fichier:Dossier_projet_S8_Bonville_Roche.pdf]]&lt;br /&gt;
| Vidéo tournée (L. Engels)&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Vêtements intelligents]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un cahier des charges à peu près correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le wiki n'est pas à jour à mi-parcours (rien sur la semaine 5). Des réalisations assez limités pour l'instant (lecture de capteur avec un Arduino et une application Android basique). Des inquiétudes sur la finalisation du projet. Sauf erreur de ma part, aucune information supplémentaire en semaine 7, Wiki toujours au même point. Projet a priori compromis.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki totalement abandonné, juste quelques lignes sur les 4 premières semaines.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Malette Arduino éducative I]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Le Wiki est assez mal tenu, pour la partie programme les commentaires sont trop succints, il manque la réalisation de la semaine 5 pour la partie routage. Le travail pour la partie bibliothèque est bien avancé, il reste l'ordonnanceur à faire fonctionner avec les périphériques disponibles. Yuqian Hu envisage de commencer la seconde partie (malette éducative) durant les vacances. Manque de communication avec les encadrants en semaine 7 (pour les deux parties du projet).&lt;br /&gt;
| Le Wiki a été mis à jour en catastrophe. Il contient des indications sur les jeux programmés pour la seconde partie du projet. Pas de cahier des charges négociés avec les encadrants pour cette seconde partie. Rien sur la recherche de systèmes de programmation graphique des Arduino (demandé dans le cahier des charges oral de la seconde partie).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P10bis [[Malette Arduino éducative II]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki très mal tenu. Aucune rédaction, uniquement des schémas. Rien pour la semaine 5. A mi-parcours le PCB, pourtant basique, n'est même pas routé. Agravation du problème en semaine 7. Projets 10 et 10bis dissociés pour éviter de pénaliser la binôme.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki totalement abandonné à la semaine 6, documents obsolètes sur le PCB ordonnanceur, rien d'autre. Peu de retours, une première version non satisfaisante du PCB ordonnanceur a été livrée. Des directives envoyées par courriel pour corriger le tir.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[Fabricarium - partage simplifié]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges tout à fait correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki correct. Les réflexions sur la nature de la boite ont pris beaucoup de temps. Il y a assez peu de réalisations concrètes pour l'instant. Cela dit, avec des efforts, vous devez pouvoir terminer le projet en fournissant un prototype fonctionnel.&lt;br /&gt;
| Wiki presque à jour et un peu trop succint.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo par le club vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Art embarqué]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki mal tenu (manquent deux semaines dans la chronologie). Impossible de juger du travail réalisé. Non respect de la consigne notée, il sera pris en compte dans la notation finale. Inquiètude levée sur la qualité du travail (par les élèves et par l'encadrant) en semaine 6. Wiki mis à jour.&lt;br /&gt;
| Wiki tout à fait à jour même s'il n'est pas super détaillé. Alors comme ça ça marche mieux sous Linux ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[Aimant intelligent]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges complet.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki complet mais avec des coquilles. Une certaine inquiétude sur la possibilité de mener le travail à bien. Ni la conception de l'aimant ni la réalisation de l'application Android ne sont très avancés. Rien n'incite à l'optimisme en semaine 7 (rien sur le Wiki, pas de nouvelle des élèves).&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki presque à jour et plutôt détaillé et illustré. Merci de corriger les nombreuses coquilles. Beaucoup plus d'optimisme sur la réalisation du projet.&lt;br /&gt;
|&lt;br /&gt;
|[[Média:Rapport_projet_YT.pdf]]&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[Thetweekproject|Machine à café]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très complet, parfait.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très détaillé et bien rédigé. Une réalisation bien avancé. Pas d'inquiétude sur la quantité de travail (en particulier durant les vacances). Par contre le projet est très ambitieux, il est toujours difficile de prévoir s'il pourra être mené à bien.&lt;br /&gt;
| Le Wiki commence à être en décalage avec la réalisation, merci de le mettre à jour. Indiquez ce qui est fait et ce qu'il reste à faire.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://www.youtube.com/watch?v=GXPjxfLEy3o Disponible sur Youtube]&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[Drone autonome]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, illustré mais avec quelques coquilles. Le matériel est déjà complètement pris en main à mi-parcours. Il reste à concevoir l'infrastructure de contrôle de la route du drône. Il est probable que le projet puisse être mené à bien.&lt;br /&gt;
| Wiki à jour mais les informations sont rares. Essayez de dresser un bilan des réalisation et une liste des tâches qui restent à réaliser. Au vu des retours IRL toutes les difficultés techniques semblent aplanies, confirmez cela dans le Wiki.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo tournée (L. Engels)&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[Balise de suivi de polluant]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Cahier des charges propre et complet avec les étapes à réaliser. Très bien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Le Wiki serait très correct s'il était à jour (rien sur la semaine 5 contrairement à la consigne). Le Wiki ne dit rien sur l'avancement de réalisation de la balise. C'est un peu inquiétant, un prototype fonctionnel pourra-t-il être présenté en fin de projet ? Une partie des inquiétudes est levée en semaine 6. Oubliez les deux Arduinos, faites fonctionner les deux shields sur le même. Demandez conseil à ce sujet à vos encadrants.&lt;br /&gt;
| Wiki à jour et très détaillé. L'avancé des travaux est parfaitement décrite.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 23/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Réseau informatique et musique]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Bon cahier des charges.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki n'est absolument pas tenu à jour. Pas de contact avec l'encadrement depuis 15 jours. Le projet semble abandonné, vous vous dirigez droit vers une catastrophe. Pas mieux en semaine 7 malgré une discussion avec l'élève.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki est un peu mieux tenu mais toujours pas à jour, peu d'informations dans ce Wiki. Pas de rapport oral.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Motorisation d'un véhicule électrique]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bon cahier des charges avec un planning prévisionnel précis.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Excellent Wiki, bien illustré et à jour. Vous semblez rencontrer un problème technique mais vous semblez aussi travailler à sa résolution. Il parait probable que vous soyez entrain de prendre du retard par rapport à votre planning.&lt;br /&gt;
| Wiki pratiquement à jour et détaillé. Les difficultés de mi-parcours semblent avoir été surmontées.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P24 [[Dé électronique communiquant]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki bien tenu, très bien illustré. Le travail réalisé est bien décrit. Vous semblez rencontrer un problème par rapport à la plateforme de développement. Conntinuez-vous avec un MBED, ou passez-vous sur un Arduino ? Il faut peut être en discuter avec votre encadrant.&lt;br /&gt;
| Wiki mis à jour en catastrophe (sans les illustrations) le 12 avril pour les semaines 6 à 10. Wiki plutôt complet expliquant bien le travail effectué. Il n'est pas encore clair que le projet puisse aboutir.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV sollicité&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[Synthetiseur]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges assez original.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki bien tenu, très bien illustré, des informations intéressantes. Par contre laissez tomber l'idée farfelue de la Fedora sur vos PC. SMEWS s'installe à merveille sur une Debian. La remarque sur ActiveX me semble totalement hors sujet, que voulez-vous faire avec un ActiveX ? Attention au travail non coordonné entre la partie SMEWS et la partie contrôle de l'électronique analogique. Vous n'utilisez pas le même environnement (C++ pour l'IDE Web et C pur pour SMEWS). Vérifiez que vous pouvez intégrer les deux parties. Attention aussi concernant les PCB que vous souhaitez réaliser. Vu les délais et les problèmes de réalisation de PCB, le routage doit être fait au plus tôt (dans la semaine de la rentrée). Beaucoup de points délicats, la réalisation d'un prototype fonctionnel n'est pas assurée. Des efforts supplémentaires sont nécessaires.&lt;br /&gt;
| Wiki pratiquement à jour, bien illustré, correctement détaillé. Etat d'avancement très satisfaisant mais encore du travail à effectuer.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 22/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[e-theremin ]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges en dernière limite.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, très bien illustré. Vous semblez rencontrer un problème de traitement de signal. Veuillez le caractériser précisément et consulter un de vos enseignants dans le domaine. Si vous devez concevoir un PCB pour la partie électronique analogique faite le de suite (dans la semaine de la rentrée).&lt;br /&gt;
| Le Wiki est plutôt à jour mais les informations données sont un peu maigres. Votre circuit fonctionne-t-il ? Pouvez-vous décrire plus précisément le développement de l'application X11 ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 22/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Dessin 3D|Dessin 3D en environnement immersif]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct en dernière limite.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, illustré, travail effectué très bien décrit. Une première application autonome testée. Si j'ai bien compris il vous faut encore inclure cette application à Unity.&lt;br /&gt;
| Wiki un peu en décalage mais avec des informations détaillées. Une vidéo de démonstration, ce n'est pas particulièrement spectaculaire mais au moins cela montre qu'un prototype existe. Vous en êtes où actuellement ? Qu'on donné les tests ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[Visualisation Open Data]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki à jour, peu illustré, en particulier un schéma du système à réaliser serait le bienvenu. Le problème de la liste des gares avec le changement de syntaxe semble traité un peu rapidement. Vous semblez avoir tous les éléments pour un premier prototype, mettez le en place rapidement.&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; Le Wiki n'est pas à jour. Effort important des encadrants pour remettre ce projet sur les rails. Aucune production des élèves à deux semaines de la fin du projet malgré une feuille de route précise. &amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[Surveillance passive du sommeil]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très complet. Parfait.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki complet et clair. Le bilan à mi-parcours est une bonne idée, il pourrait englober votre avancement sur le programme Android. Un schéma du fonctionnement global du système serait le bienvenu. Vous semblez être dans les temps pour présenter un prototype fonctionnel en fin de projet.&lt;br /&gt;
| Le Wiki n'est pas vraiment à jour. Description précise du travail. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Robot déformable|Console de contrôle pour robot déformable]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Un wiki très complet et très précis. Par contre certains des problèmes que vous rencontrez semblent pouvoir se résoudre facilement. Essayez de solliciter vos encadrants quand cela vous arrive. En particulier le problème de port série que vous décrivez semble être facile à corriger.&lt;br /&gt;
| Wiki à jour, détaillé et vous avez fait un réel effort de correction des coquilles. Sur le fond vous parlez surtout des absences de votre encadrant ou de la lenteur des mises à jour, pas passionnant.&lt;br /&gt;
|&lt;br /&gt;
|[[Média:Rapport_final_tiraby_elbez.pdf]]&lt;br /&gt;
| Vidéo avec Jérémie Dequidt&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[RoboCup 2015]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Trés bon cahier des charges.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Excellent Wiki très précis et bien illustré. Par contre le travail décrit semble être assez théorique (algorithmes). Un test sur le robotino est-il prévu pour valider la correction des algorithmes ?&lt;br /&gt;
| Wiki toujours très détaillé et illustré, pas tout à fait à jour.&lt;br /&gt;
| &lt;br /&gt;
| [[Fichier:RapportProjetSmaggheHage.pdf]]&lt;br /&gt;
| Prise de vues pendant la robocup&lt;br /&gt;
|-&lt;br /&gt;
| P36 [[RoboCup 2015 - Pyro Team]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Parfait.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Excellent Wiki, très précis, très bien illustré. Le travail semble être déjà très avancé.&lt;br /&gt;
| Toujours excellent, pratiquement à jour.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Prise de vues pendant la robocup&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interaction Homme Robot]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;lightgreen&amp;quot;&amp;gt;Un cahier des charges minimal en dernière limite.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Wiki à jour, peu illustré. A vu de néophyte, 5 semaines pour arriver à envoyer les premiers ordres au Nao via le serveur TCP intégré semble être un délai un peu long. Il vous reste la moitié du projet pour obtenir des résultats. Inquiétudes levées après discussion avec Flavien ROYER. Une vidéo de démonstration montre une nette progression dans le projet. Probable dissociation des notes.&lt;br /&gt;
| Wiki à jour, travail correctement décrit.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2014/2015&amp;diff=21148</id>
		<title>Projets IMA4 SC &amp; SA 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2014/2015&amp;diff=21148"/>
				<updated>2015-05-11T20:26:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Notes sur les projets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Encadrants école !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[Brique Lego augmentée]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon / Emmanuelle Pichonat &lt;br /&gt;
| Alex JULITA / Déborah SAUNDERS &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Tracabilité hopital|Amélioration de la traçabilité en milieu hospitalier]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Julian BONVILLE / François ROCHE&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Vêtements intelligents]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Alexander BOWN / Valentin PIAT&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Malette Arduino éducative I]]&lt;br /&gt;
| Emmanuelle Pichonat / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Yuqian HU&lt;br /&gt;
|-&lt;br /&gt;
| P10bis [[Malette Arduino éducative II]]&lt;br /&gt;
| Emmanuelle Pichonat / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Mehmet ILTER&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[Fabricarium - partage simplifié]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon / Rodolphe Astori&lt;br /&gt;
| Jérémie DENECHAUD / Julien HERIN &lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Art embarqué]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Thibaut SCHOLAERT / Jean-michel TOURNIER&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[Aimant intelligent]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Louis THEBAULT / Bertrand YVERNAULT&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[Thetweekproject|Machine à café]]&lt;br /&gt;
| Xavier Redon &lt;br /&gt;
| Jean WASILEWSKI / Pierre LETOUSEY&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[Drone autonome]]&lt;br /&gt;
| Xavier Redon &lt;br /&gt;
| Kévin COLAUTTI / Benjamin LEFORT&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[Balise de suivi de polluant]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Maxime MORISSE / Timothée TENEUR&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Réseau informatique et musique]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Mageshwaran SEKAR	 &lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Motorisation d'un véhicule électrique]]&lt;br /&gt;
| Walid Boughanmi&lt;br /&gt;
| Shuai HE / Quentin SULTANA&lt;br /&gt;
|-&lt;br /&gt;
| P24 [[Dé électronique communiquant]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Corentin DUPLOUY / Méhdi ZEGGAI&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[Synthetiseur]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Alexis VINOT / Lu XIA&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[e-theremin ]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Louis CHAUCHARD / Romain IMBERT&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Dessin 3D|Dessin 3D en environnement immersif]]&lt;br /&gt;
| Laurent Grisoni&lt;br /&gt;
| Alexandre JOUY / Romain LIBAERT&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[Visualisation Open Data]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon&lt;br /&gt;
| Elise TISSOT / Beatriz ODRIOZOLA&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[Surveillance passive du sommeil]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Jérôme BAILET / Manouk SIMON&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Robot déformable|Console de contrôle pour robot déformable]]&lt;br /&gt;
| Jérémie Dequidt&lt;br /&gt;
| Ghada ELBEZ / Céline TIRABY&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[RoboCup 2015]]&lt;br /&gt;
| Vincent Coelen / Rochdi Merzouki&lt;br /&gt;
| Sandra HAGE CHEHADE / Cyril SMAGGHE&lt;br /&gt;
|-&lt;br /&gt;
| P36 [[RoboCup 2015 - Pyro Team]]&lt;br /&gt;
| Vincent Coelen / Rochdi Merzouki&lt;br /&gt;
| Thomas DANEL / Romain KRIKORIAN &lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interaction Homme Robot]]&lt;br /&gt;
| Emmanuelle Grangier / Rochdi Merzouki&lt;br /&gt;
| Arnaud DESHAYS / Flavien ROYER&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
* P6 : Olimex platine ECG&lt;br /&gt;
&lt;br /&gt;
==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Mini-cahier des charges || Mi-parcours || Fin de parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[Brique Lego augmentée]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki à jour. Déjà une réalisation (3 briques). Veillez à équilibrer le travail et à rendre compte systématiquement à l'encadrant.&lt;br /&gt;
| Wiki à jour permettant de suivre l'état d'avancement du travail. Bien !&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 23/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Tracabilité hopital|Amélioration de la traçabilité en milieu hospitalier]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki assez complet. Capture des datamatrix avancé. Passez-vous de l'utilitaire &amp;lt;tt&amp;gt;motion&amp;lt;/tt&amp;gt;. Il faut penser à concevoir l'application Web (base de données et interface). Quelles technologies Web comptez-vous utiliser ?&lt;br /&gt;
| Wiki presque à jour. Vous auriez pu mettre un mot de votre réalisation d'un serveur WebSocket. Diminuez la taille de vos captures d'écran pour rendre la lecture du Wiki plus agréable.&lt;br /&gt;
|&lt;br /&gt;
|[[Fichier:Dossier_projet_S8_Bonville_Roche.pdf]]&lt;br /&gt;
| Vidéo tournée (L. Engels)&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Vêtements intelligents]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un cahier des charges à peu près correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le wiki n'est pas à jour à mi-parcours (rien sur la semaine 5). Des réalisations assez limités pour l'instant (lecture de capteur avec un Arduino et une application Android basique). Des inquiétudes sur la finalisation du projet. Sauf erreur de ma part, aucune information supplémentaire en semaine 7, Wiki toujours au même point. Projet a priori compromis.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki totalement abandonné, juste quelques lignes sur les 4 premières semaines.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Malette Arduino éducative I]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Le Wiki est assez mal tenu, pour la partie programme les commentaires sont trop succints, il manque la réalisation de la semaine 5 pour la partie routage. Le travail pour la partie bibliothèque est bien avancé, il reste l'ordonnanceur à faire fonctionner avec les périphériques disponibles. Yuqian Hu envisage de commencer la seconde partie (malette éducative) durant les vacances. Manque de communication avec les encadrants en semaine 7 (pour les deux parties du projet).&lt;br /&gt;
| Le Wiki a été mis à jour en catastrophe. Il contient des indications sur les jeux programmés pour la seconde partie du projet. Pas de cahier des charges négociés avec les encadrants pour cette seconde partie. Rien sur la recherche de systèmes de programmation graphique des Arduino (demandé dans le cahier des charges oral de la seconde partie).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P10bis [[Malette Arduino éducative II]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki très mal tenu. Aucune rédaction, uniquement des schémas. Rien pour la semaine 5. A mi-parcours le PCB, pourtant basique, n'est même pas routé. Agravation du problème en semaine 7. Projets 10 et 10bis dissociés pour éviter de pénaliser la binôme.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki totalement abandonné à la semaine 6, documents obsolètes sur le PCB ordonnanceur, rien d'autre. Peu de retours, une première version non satisfaisante du PCB ordonnanceur a été livrée. Des directives envoyées par courriel pour corriger le tir.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[Fabricarium - partage simplifié]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges tout à fait correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki correct. Les réflexions sur la nature de la boite ont pris beaucoup de temps. Il y a assez peu de réalisations concrètes pour l'instant. Cela dit, avec des efforts, vous devez pouvoir terminer le projet en fournissant un prototype fonctionnel.&lt;br /&gt;
| Wiki presque à jour et un peu trop succint.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo par le club vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Art embarqué]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki mal tenu (manquent deux semaines dans la chronologie). Impossible de juger du travail réalisé. Non respect de la consigne notée, il sera pris en compte dans la notation finale. Inquiètude levée sur la qualité du travail (par les élèves et par l'encadrant) en semaine 6. Wiki mis à jour.&lt;br /&gt;
| Wiki tout à fait à jour même s'il n'est pas super détaillé. Alors comme ça ça marche mieux sous Linux ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[Aimant intelligent]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges complet.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki complet mais avec des coquilles. Une certaine inquiétude sur la possibilité de mener le travail à bien. Ni la conception de l'aimant ni la réalisation de l'application Android ne sont très avancés. Rien n'incite à l'optimisme en semaine 7 (rien sur le Wiki, pas de nouvelle des élèves).&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki presque à jour et plutôt détaillé et illustré. Merci de corriger les nombreuses coquilles. Beaucoup plus d'optimisme sur la réalisation du projet.&lt;br /&gt;
|&lt;br /&gt;
|[[Média:Rapport_projet_YT.pdf]]&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[Thetweekproject|Machine à café]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très complet, parfait.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très détaillé et bien rédigé. Une réalisation bien avancé. Pas d'inquiétude sur la quantité de travail (en particulier durant les vacances). Par contre le projet est très ambitieux, il est toujours difficile de prévoir s'il pourra être mené à bien.&lt;br /&gt;
| Le Wiki commence à être en décalage avec la réalisation, merci de le mettre à jour. Indiquez ce qui est fait et ce qu'il reste à faire.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://www.youtube.com/watch?v=GXPjxfLEy3o Disponible sur Youtube]&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[Drone autonome]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, illustré mais avec quelques coquilles. Le matériel est déjà complètement pris en main à mi-parcours. Il reste à concevoir l'infrastructure de contrôle de la route du drône. Il est probable que le projet puisse être mené à bien.&lt;br /&gt;
| Wiki à jour mais les informations sont rares. Essayez de dresser un bilan des réalisation et une liste des tâches qui restent à réaliser. Au vu des retours IRL toutes les difficultés techniques semblent aplanies, confirmez cela dans le Wiki.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo tournée (L. Engels)&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[Balise de suivi de polluant]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Cahier des charges propre et complet avec les étapes à réaliser. Très bien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Le Wiki serait très correct s'il était à jour (rien sur la semaine 5 contrairement à la consigne). Le Wiki ne dit rien sur l'avancement de réalisation de la balise. C'est un peu inquiétant, un prototype fonctionnel pourra-t-il être présenté en fin de projet ? Une partie des inquiétudes est levée en semaine 6. Oubliez les deux Arduinos, faites fonctionner les deux shields sur le même. Demandez conseil à ce sujet à vos encadrants.&lt;br /&gt;
| Wiki à jour et très détaillé. L'avancé des travaux est parfaitement décrite.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 23/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Réseau informatique et musique]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Bon cahier des charges.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki n'est absolument pas tenu à jour. Pas de contact avec l'encadrement depuis 15 jours. Le projet semble abandonné, vous vous dirigez droit vers une catastrophe. Pas mieux en semaine 7 malgré une discussion avec l'élève.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki est un peu mieux tenu mais toujours pas à jour, peu d'informations dans ce Wiki. Pas de rapport oral.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Motorisation d'un véhicule électrique]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bon cahier des charges avec un planning prévisionnel précis.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Excellent Wiki, bien illustré et à jour. Vous semblez rencontrer un problème technique mais vous semblez aussi travailler à sa résolution. Il parait probable que vous soyez entrain de prendre du retard par rapport à votre planning.&lt;br /&gt;
| Wiki pratiquement à jour et détaillé. Les difficultés de mi-parcours semblent avoir été surmontées.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P24 [[Dé électronique communiquant]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki bien tenu, très bien illustré. Le travail réalisé est bien décrit. Vous semblez rencontrer un problème par rapport à la plateforme de développement. Conntinuez-vous avec un MBED, ou passez-vous sur un Arduino ? Il faut peut être en discuter avec votre encadrant.&lt;br /&gt;
| Wiki mis à jour en catastrophe (sans les illustrations) le 12 avril pour les semaines 6 à 10. Wiki plutôt complet expliquant bien le travail effectué. Il n'est pas encore clair que le projet puisse aboutir.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV sollicité&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[Synthetiseur]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges assez original.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki bien tenu, très bien illustré, des informations intéressantes. Par contre laissez tomber l'idée farfelue de la Fedora sur vos PC. SMEWS s'installe à merveille sur une Debian. La remarque sur ActiveX me semble totalement hors sujet, que voulez-vous faire avec un ActiveX ? Attention au travail non coordonné entre la partie SMEWS et la partie contrôle de l'électronique analogique. Vous n'utilisez pas le même environnement (C++ pour l'IDE Web et C pur pour SMEWS). Vérifiez que vous pouvez intégrer les deux parties. Attention aussi concernant les PCB que vous souhaitez réaliser. Vu les délais et les problèmes de réalisation de PCB, le routage doit être fait au plus tôt (dans la semaine de la rentrée). Beaucoup de points délicats, la réalisation d'un prototype fonctionnel n'est pas assurée. Des efforts supplémentaires sont nécessaires.&lt;br /&gt;
| Wiki pratiquement à jour, bien illustré, correctement détaillé. Etat d'avancement très satisfaisant mais encore du travail à effectuer.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 22/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[e-theremin ]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges en dernière limite.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, très bien illustré. Vous semblez rencontrer un problème de traitement de signal. Veuillez le caractériser précisément et consulter un de vos enseignants dans le domaine. Si vous devez concevoir un PCB pour la partie électronique analogique faite le de suite (dans la semaine de la rentrée).&lt;br /&gt;
| Le Wiki est plutôt à jour mais les informations données sont un peu maigres. Votre circuit fonctionne-t-il ? Pouvez-vous décrire plus précisément le développement de l'application X11 ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 22/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Dessin 3D|Dessin 3D en environnement immersif]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct en dernière limite.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, illustré, travail effectué très bien décrit. Une première application autonome testée. Si j'ai bien compris il vous faut encore inclure cette application à Unity.&lt;br /&gt;
| Wiki un peu en décalage mais avec des informations détaillées. Une vidéo de démonstration, ce n'est pas particulièrement spectaculaire mais au moins cela montre qu'un prototype existe. Vous en êtes où actuellement ? Qu'on donné les tests ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[Visualisation Open Data]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki à jour, peu illustré, en particulier un schéma du système à réaliser serait le bienvenu. Le problème de la liste des gares avec le changement de syntaxe semble traité un peu rapidement. Vous semblez avoir tous les éléments pour un premier prototype, mettez le en place rapidement.&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; Le Wiki n'est pas à jour. Effort important des encadrants pour remettre ce projet sur les rails. Aucune production des élèves à deux semaines de la fin du projet malgré une feuille de route précise. &amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[Surveillance passive du sommeil]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très complet. Parfait.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki complet et clair. Le bilan à mi-parcours est une bonne idée, il pourrait englober votre avancement sur le programme Android. Un schéma du fonctionnement global du système serait le bienvenu. Vous semblez être dans les temps pour présenter un prototype fonctionnel en fin de projet.&lt;br /&gt;
| Le Wiki n'est pas vraiment à jour. Description précise du travail. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Robot déformable|Console de contrôle pour robot déformable]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Un wiki très complet et très précis. Par contre certains des problèmes que vous rencontrez semblent pouvoir se résoudre facilement. Essayez de solliciter vos encadrants quand cela vous arrive. En particulier le problème de port série que vous décrivez semble être facile à corriger.&lt;br /&gt;
| Wiki à jour, détaillé et vous avez fait un réel effort de correction des coquilles. Sur le fond vous parlez surtout des absences de votre encadrant ou de la lenteur des mises à jour, pas passionnant.&lt;br /&gt;
|&lt;br /&gt;
|[[Média:Rapport_final_tiraby_elbez.pdf]]&lt;br /&gt;
| Vidéo avec Jérémie Dequidt&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[RoboCup 2015]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Trés bon cahier des charges.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Excellent Wiki très précis et bien illustré. Par contre le travail décrit semble être assez théorique (algorithmes). Un test sur le robotino est-il prévu pour valider la correction des algorithmes ?&lt;br /&gt;
| Wiki toujours très détaillé et illustré, pas tout à fait à jour.&lt;br /&gt;
| &lt;br /&gt;
| [[Fichier:RapportProjetSmaggheHage.pdf]]&lt;br /&gt;
| Prise de vues pendant la robocup&lt;br /&gt;
|-&lt;br /&gt;
| P36 [[RoboCup 2015 - Pyro Team]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Parfait.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Excellent Wiki, très précis, très bien illustré. Le travail semble être déjà très avancé.&lt;br /&gt;
| Toujours excellent, pratiquement à jour.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Prise de vues pendant la robocup&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interaction Homme Robot]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;lightgreen&amp;quot;&amp;gt;Un cahier des charges minimal en dernière limite.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Wiki à jour, peu illustré. A vu de néophyte, 5 semaines pour arriver à envoyer les premiers ordres au Nao via le serveur TCP intégré semble être un délai un peu long. Il vous reste la moitié du projet pour obtenir des résultats. Inquiétudes levées après discussion avec Flavien ROYER. Une vidéo de démonstration montre une nette progression dans le projet. Probable dissociation des notes.&lt;br /&gt;
| Wiki à jour, travail correctement décrit.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2014/2015&amp;diff=21147</id>
		<title>Projets IMA4 SC &amp; SA 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA4_SC_%26_SA_2014/2015&amp;diff=21147"/>
				<updated>2015-05-11T20:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Notes sur les projets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Encadrants école !! Elèves&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[Brique Lego augmentée]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon / Emmanuelle Pichonat &lt;br /&gt;
| Alex JULITA / Déborah SAUNDERS &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Tracabilité hopital|Amélioration de la traçabilité en milieu hospitalier]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Julian BONVILLE / François ROCHE&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Vêtements intelligents]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Alexander BOWN / Valentin PIAT&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Malette Arduino éducative I]]&lt;br /&gt;
| Emmanuelle Pichonat / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Yuqian HU&lt;br /&gt;
|-&lt;br /&gt;
| P10bis [[Malette Arduino éducative II]]&lt;br /&gt;
| Emmanuelle Pichonat / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Mehmet ILTER&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[Fabricarium - partage simplifié]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon / Rodolphe Astori&lt;br /&gt;
| Jérémie DENECHAUD / Julien HERIN &lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Art embarqué]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Thibaut SCHOLAERT / Jean-michel TOURNIER&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[Aimant intelligent]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Louis THEBAULT / Bertrand YVERNAULT&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[Thetweekproject|Machine à café]]&lt;br /&gt;
| Xavier Redon &lt;br /&gt;
| Jean WASILEWSKI / Pierre LETOUSEY&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[Drone autonome]]&lt;br /&gt;
| Xavier Redon &lt;br /&gt;
| Kévin COLAUTTI / Benjamin LEFORT&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[Balise de suivi de polluant]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Maxime MORISSE / Timothée TENEUR&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Réseau informatique et musique]]&lt;br /&gt;
| Xavier Redon&lt;br /&gt;
| Mageshwaran SEKAR	 &lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Motorisation d'un véhicule électrique]]&lt;br /&gt;
| Walid Boughanmi&lt;br /&gt;
| Shuai HE / Quentin SULTANA&lt;br /&gt;
|-&lt;br /&gt;
| P24 [[Dé électronique communiquant]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Corentin DUPLOUY / Méhdi ZEGGAI&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[Synthetiseur]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Alexis VINOT / Lu XIA&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[e-theremin ]]&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
| Louis CHAUCHARD / Romain IMBERT&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Dessin 3D|Dessin 3D en environnement immersif]]&lt;br /&gt;
| Laurent Grisoni&lt;br /&gt;
| Alexandre JOUY / Romain LIBAERT&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[Visualisation Open Data]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys / Xavier Redon&lt;br /&gt;
| Elise TISSOT / Beatriz ODRIOZOLA&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[Surveillance passive du sommeil]]&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| Jérôme BAILET / Manouk SIMON&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Robot déformable|Console de contrôle pour robot déformable]]&lt;br /&gt;
| Jérémie Dequidt&lt;br /&gt;
| Ghada ELBEZ / Céline TIRABY&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[RoboCup 2015]]&lt;br /&gt;
| Vincent Coelen / Rochdi Merzouki&lt;br /&gt;
| Sandra HAGE CHEHADE / Cyril SMAGGHE&lt;br /&gt;
|-&lt;br /&gt;
| P36 [[RoboCup 2015 - Pyro Team]]&lt;br /&gt;
| Vincent Coelen / Rochdi Merzouki&lt;br /&gt;
| Thomas DANEL / Romain KRIKORIAN &lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interaction Homme Robot]]&lt;br /&gt;
| Emmanuelle Grangier / Rochdi Merzouki&lt;br /&gt;
| Arnaud DESHAYS / Flavien ROYER&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
* P6 : Olimex platine ECG&lt;br /&gt;
&lt;br /&gt;
==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Mini-cahier des charges || Mi-parcours || Fin de parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[Brique Lego augmentée]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki à jour. Déjà une réalisation (3 briques). Veillez à équilibrer le travail et à rendre compte systématiquement à l'encadrant.&lt;br /&gt;
| Wiki à jour permettant de suivre l'état d'avancement du travail. Bien !&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 23/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[Tracabilité hopital|Amélioration de la traçabilité en milieu hospitalier]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki assez complet. Capture des datamatrix avancé. Passez-vous de l'utilitaire &amp;lt;tt&amp;gt;motion&amp;lt;/tt&amp;gt;. Il faut penser à concevoir l'application Web (base de données et interface). Quelles technologies Web comptez-vous utiliser ?&lt;br /&gt;
| Wiki presque à jour. Vous auriez pu mettre un mot de votre réalisation d'un serveur WebSocket. Diminuez la taille de vos captures d'écran pour rendre la lecture du Wiki plus agréable.&lt;br /&gt;
|[[Fichier:Dossier_projet_S8_Bonville_Roche.pdf]]&lt;br /&gt;
|&lt;br /&gt;
| Vidéo tournée (L. Engels)&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[Vêtements intelligents]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Un cahier des charges à peu près correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le wiki n'est pas à jour à mi-parcours (rien sur la semaine 5). Des réalisations assez limités pour l'instant (lecture de capteur avec un Arduino et une application Android basique). Des inquiétudes sur la finalisation du projet. Sauf erreur de ma part, aucune information supplémentaire en semaine 7, Wiki toujours au même point. Projet a priori compromis.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki totalement abandonné, juste quelques lignes sur les 4 premières semaines.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[Malette Arduino éducative I]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Le Wiki est assez mal tenu, pour la partie programme les commentaires sont trop succints, il manque la réalisation de la semaine 5 pour la partie routage. Le travail pour la partie bibliothèque est bien avancé, il reste l'ordonnanceur à faire fonctionner avec les périphériques disponibles. Yuqian Hu envisage de commencer la seconde partie (malette éducative) durant les vacances. Manque de communication avec les encadrants en semaine 7 (pour les deux parties du projet).&lt;br /&gt;
| Le Wiki a été mis à jour en catastrophe. Il contient des indications sur les jeux programmés pour la seconde partie du projet. Pas de cahier des charges négociés avec les encadrants pour cette seconde partie. Rien sur la recherche de systèmes de programmation graphique des Arduino (demandé dans le cahier des charges oral de la seconde partie).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P10bis [[Malette Arduino éducative II]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki très mal tenu. Aucune rédaction, uniquement des schémas. Rien pour la semaine 5. A mi-parcours le PCB, pourtant basique, n'est même pas routé. Agravation du problème en semaine 7. Projets 10 et 10bis dissociés pour éviter de pénaliser la binôme.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki totalement abandonné à la semaine 6, documents obsolètes sur le PCB ordonnanceur, rien d'autre. Peu de retours, une première version non satisfaisante du PCB ordonnanceur a été livrée. Des directives envoyées par courriel pour corriger le tir.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P11 [[Fabricarium - partage simplifié]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges tout à fait correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki correct. Les réflexions sur la nature de la boite ont pris beaucoup de temps. Il y a assez peu de réalisations concrètes pour l'instant. Cela dit, avec des efforts, vous devez pouvoir terminer le projet en fournissant un prototype fonctionnel.&lt;br /&gt;
| Wiki presque à jour et un peu trop succint.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo par le club vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[Art embarqué]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki mal tenu (manquent deux semaines dans la chronologie). Impossible de juger du travail réalisé. Non respect de la consigne notée, il sera pris en compte dans la notation finale. Inquiètude levée sur la qualité du travail (par les élèves et par l'encadrant) en semaine 6. Wiki mis à jour.&lt;br /&gt;
| Wiki tout à fait à jour même s'il n'est pas super détaillé. Alors comme ça ça marche mieux sous Linux ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[Aimant intelligent]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges complet.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Wiki complet mais avec des coquilles. Une certaine inquiétude sur la possibilité de mener le travail à bien. Ni la conception de l'aimant ni la réalisation de l'application Android ne sont très avancés. Rien n'incite à l'optimisme en semaine 7 (rien sur le Wiki, pas de nouvelle des élèves).&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki presque à jour et plutôt détaillé et illustré. Merci de corriger les nombreuses coquilles. Beaucoup plus d'optimisme sur la réalisation du projet.&lt;br /&gt;
|&lt;br /&gt;
|[[Média:Rapport_projet_YT.pdf]]&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[Thetweekproject|Machine à café]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges très complet, parfait.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très détaillé et bien rédigé. Une réalisation bien avancé. Pas d'inquiétude sur la quantité de travail (en particulier durant les vacances). Par contre le projet est très ambitieux, il est toujours difficile de prévoir s'il pourra être mené à bien.&lt;br /&gt;
| Le Wiki commence à être en décalage avec la réalisation, merci de le mettre à jour. Indiquez ce qui est fait et ce qu'il reste à faire.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [https://www.youtube.com/watch?v=GXPjxfLEy3o Disponible sur Youtube]&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[Drone autonome]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, illustré mais avec quelques coquilles. Le matériel est déjà complètement pris en main à mi-parcours. Il reste à concevoir l'infrastructure de contrôle de la route du drône. Il est probable que le projet puisse être mené à bien.&lt;br /&gt;
| Wiki à jour mais les informations sont rares. Essayez de dresser un bilan des réalisation et une liste des tâches qui restent à réaliser. Au vu des retours IRL toutes les difficultés techniques semblent aplanies, confirmez cela dans le Wiki.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo tournée (L. Engels)&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[Balise de suivi de polluant]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Cahier des charges propre et complet avec les étapes à réaliser. Très bien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Le Wiki serait très correct s'il était à jour (rien sur la semaine 5 contrairement à la consigne). Le Wiki ne dit rien sur l'avancement de réalisation de la balise. C'est un peu inquiétant, un prototype fonctionnel pourra-t-il être présenté en fin de projet ? Une partie des inquiétudes est levée en semaine 6. Oubliez les deux Arduinos, faites fonctionner les deux shields sur le même. Demandez conseil à ce sujet à vos encadrants.&lt;br /&gt;
| Wiki à jour et très détaillé. L'avancé des travaux est parfaitement décrite.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 23/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[Réseau informatique et musique]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Bon cahier des charges.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki n'est absolument pas tenu à jour. Pas de contact avec l'encadrement depuis 15 jours. Le projet semble abandonné, vous vous dirigez droit vers une catastrophe. Pas mieux en semaine 7 malgré une discussion avec l'élève.&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Le Wiki est un peu mieux tenu mais toujours pas à jour, peu d'informations dans ce Wiki. Pas de rapport oral.&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[Motorisation d'un véhicule électrique]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bon cahier des charges avec un planning prévisionnel précis.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Excellent Wiki, bien illustré et à jour. Vous semblez rencontrer un problème technique mais vous semblez aussi travailler à sa résolution. Il parait probable que vous soyez entrain de prendre du retard par rapport à votre planning.&lt;br /&gt;
| Wiki pratiquement à jour et détaillé. Les difficultés de mi-parcours semblent avoir été surmontées.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P24 [[Dé électronique communiquant]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki bien tenu, très bien illustré. Le travail réalisé est bien décrit. Vous semblez rencontrer un problème par rapport à la plateforme de développement. Conntinuez-vous avec un MBED, ou passez-vous sur un Arduino ? Il faut peut être en discuter avec votre encadrant.&lt;br /&gt;
| Wiki mis à jour en catastrophe (sans les illustrations) le 12 avril pour les semaines 6 à 10. Wiki plutôt complet expliquant bien le travail effectué. Il n'est pas encore clair que le projet puisse aboutir.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV sollicité&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[Synthetiseur]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges assez original.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki bien tenu, très bien illustré, des informations intéressantes. Par contre laissez tomber l'idée farfelue de la Fedora sur vos PC. SMEWS s'installe à merveille sur une Debian. La remarque sur ActiveX me semble totalement hors sujet, que voulez-vous faire avec un ActiveX ? Attention au travail non coordonné entre la partie SMEWS et la partie contrôle de l'électronique analogique. Vous n'utilisez pas le même environnement (C++ pour l'IDE Web et C pur pour SMEWS). Vérifiez que vous pouvez intégrer les deux parties. Attention aussi concernant les PCB que vous souhaitez réaliser. Vu les délais et les problèmes de réalisation de PCB, le routage doit être fait au plus tôt (dans la semaine de la rentrée). Beaucoup de points délicats, la réalisation d'un prototype fonctionnel n'est pas assurée. Des efforts supplémentaires sont nécessaires.&lt;br /&gt;
| Wiki pratiquement à jour, bien illustré, correctement détaillé. Etat d'avancement très satisfaisant mais encore du travail à effectuer.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 22/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[e-theremin ]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges en dernière limite.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, très bien illustré. Vous semblez rencontrer un problème de traitement de signal. Veuillez le caractériser précisément et consulter un de vos enseignants dans le domaine. Si vous devez concevoir un PCB pour la partie électronique analogique faite le de suite (dans la semaine de la rentrée).&lt;br /&gt;
| Le Wiki est plutôt à jour mais les informations données sont un peu maigres. Votre circuit fonctionne-t-il ? Pouvez-vous décrire plus précisément le développement de l'application X11 ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV le 22/04/2015&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[Dessin 3D|Dessin 3D en environnement immersif]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges correct en dernière limite.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki très correct, illustré, travail effectué très bien décrit. Une première application autonome testée. Si j'ai bien compris il vous faut encore inclure cette application à Unity.&lt;br /&gt;
| Wiki un peu en décalage mais avec des informations détaillées. Une vidéo de démonstration, ce n'est pas particulièrement spectaculaire mais au moins cela montre qu'un prototype existe. Vous en êtes où actuellement ? Qu'on donné les tests ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Vidéo maison&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[Visualisation Open Data]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Un cahier des charges.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki à jour, peu illustré, en particulier un schéma du système à réaliser serait le bienvenu. Le problème de la liste des gares avec le changement de syntaxe semble traité un peu rapidement. Vous semblez avoir tous les éléments pour un premier prototype, mettez le en place rapidement.&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt; Le Wiki n'est pas à jour. Effort important des encadrants pour remettre ce projet sur les rails. Aucune production des élèves à deux semaines de la fin du projet malgré une feuille de route précise. &amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P33 [[Surveillance passive du sommeil]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très complet. Parfait.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Wiki complet et clair. Le bilan à mi-parcours est une bonne idée, il pourrait englober votre avancement sur le programme Android. Un schéma du fonctionnement global du système serait le bienvenu. Vous semblez être dans les temps pour présenter un prototype fonctionnel en fin de projet.&lt;br /&gt;
| Le Wiki n'est pas vraiment à jour. Description précise du travail. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|-&lt;br /&gt;
| P34 [[Robot déformable|Console de contrôle pour robot déformable]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cahier des charges très correct.&amp;lt;/span&amp;gt;&lt;br /&gt;
| Un wiki très complet et très précis. Par contre certains des problèmes que vous rencontrez semblent pouvoir se résoudre facilement. Essayez de solliciter vos encadrants quand cela vous arrive. En particulier le problème de port série que vous décrivez semble être facile à corriger.&lt;br /&gt;
| Wiki à jour, détaillé et vous avez fait un réel effort de correction des coquilles. Sur le fond vous parlez surtout des absences de votre encadrant ou de la lenteur des mises à jour, pas passionnant.&lt;br /&gt;
|&lt;br /&gt;
|[[Média:Rapport_final_tiraby_elbez.pdf]]&lt;br /&gt;
| Vidéo avec Jérémie Dequidt&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[RoboCup 2015]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Trés bon cahier des charges.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Excellent Wiki très précis et bien illustré. Par contre le travail décrit semble être assez théorique (algorithmes). Un test sur le robotino est-il prévu pour valider la correction des algorithmes ?&lt;br /&gt;
| Wiki toujours très détaillé et illustré, pas tout à fait à jour.&lt;br /&gt;
| &lt;br /&gt;
| [[Fichier:RapportProjetSmaggheHage.pdf]]&lt;br /&gt;
| Prise de vues pendant la robocup&lt;br /&gt;
|-&lt;br /&gt;
| P36 [[RoboCup 2015 - Pyro Team]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;Parfait.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Excellent Wiki, très précis, très bien illustré. Le travail semble être déjà très avancé.&lt;br /&gt;
| Toujours excellent, pratiquement à jour.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Prise de vues pendant la robocup&lt;br /&gt;
|-&lt;br /&gt;
| P37 [[Interaction Homme Robot]]&lt;br /&gt;
| &amp;lt;font color=&amp;quot;lightgreen&amp;quot;&amp;gt;Un cahier des charges minimal en dernière limite.&amp;lt;/font&amp;gt;&lt;br /&gt;
| Wiki à jour, peu illustré. A vu de néophyte, 5 semaines pour arriver à envoyer les premiers ordres au Nao via le serveur TCP intégré semble être un délai un peu long. Il vous reste la moitié du projet pour obtenir des résultats. Inquiétudes levées après discussion avec Flavien ROYER. Une vidéo de démonstration montre une nette progression dans le projet. Probable dissociation des notes.&lt;br /&gt;
| Wiki à jour, travail correctement décrit.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| RdV non pris&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Dossier_projet_S8_Bonville_Roche.pdf&amp;diff=21146</id>
		<title>Fichier:Dossier projet S8 Bonville Roche.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Dossier_projet_S8_Bonville_Roche.pdf&amp;diff=21146"/>
				<updated>2015-05-11T20:21:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=21145</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=21145"/>
				<updated>2015-05-11T20:21:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Rapport et archive de la version finale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHRU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHRU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHRU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHRU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHRU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHRU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rapport et archive de la version finale ==&lt;br /&gt;
&lt;br /&gt;
[[File:Dossier_projet_S8_Bonville_Roche.pdf]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20985</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20985"/>
				<updated>2015-05-10T20:15:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHRU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHRU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHRU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHRU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHRU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHRU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rapport et archive de la version finale ==&lt;br /&gt;
&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20984</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20984"/>
				<updated>2015-05-10T20:13:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Rapport et archive de la version finale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rapport et archive de la version finale ==&lt;br /&gt;
&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20982</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20982"/>
				<updated>2015-05-10T20:12:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Rapport et archive de la version finale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Rapport et archive de la version finale ====&lt;br /&gt;
&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20981</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20981"/>
				<updated>2015-05-10T20:12:30Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Rapport et archive de la version finale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Rapport et archive de la version finale ====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20980</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20980"/>
				<updated>2015-05-10T20:12:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Bilan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20979</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20979"/>
				<updated>2015-05-10T20:12:03Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Douchette */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20978</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20978"/>
				<updated>2015-05-10T20:11:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Application Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20977</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20977"/>
				<updated>2015-05-10T20:11:28Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Lecture et décodage des datamatrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20976</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20976"/>
				<updated>2015-05-10T20:11:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Configuration de Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20975</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20975"/>
				<updated>2015-05-10T20:10:54Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Lecture et décodage des datamatrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20974</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20974"/>
				<updated>2015-05-10T20:10:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Configuration de Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20972</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20972"/>
				<updated>2015-05-10T20:09:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Retour des professionnels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20971</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20971"/>
				<updated>2015-05-10T20:08:56Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Configuration de Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
==== Configuration de Linux ====&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20970</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20970"/>
				<updated>2015-05-10T20:08:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Lecture et décodage des datamatrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
==== Lecture et décodage des datamatrix ====&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20969</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20969"/>
				<updated>2015-05-10T20:08:19Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Application Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
==== Application Web ====&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20968</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20968"/>
				<updated>2015-05-10T20:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Douchette */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Douchette====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Projet-S8.zip&amp;diff=20966</id>
		<title>Fichier:Projet-S8.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Projet-S8.zip&amp;diff=20966"/>
				<updated>2015-05-10T20:05:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20965</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20965"/>
				<updated>2015-05-10T20:04:50Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Rapport et archive de la version finale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20964</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20964"/>
				<updated>2015-05-10T20:04:28Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Rapport et archive de la version finale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Projet-S8.zip|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20963</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20963"/>
				<updated>2015-05-10T20:03:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Bilan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20962</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20962"/>
				<updated>2015-05-10T20:03:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Les Bases de données */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20961</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20961"/>
				<updated>2015-05-10T20:02:53Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Décodage du Datamatrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20960</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20960"/>
				<updated>2015-05-10T20:02:33Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Décodage du Datamatrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20959</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20959"/>
				<updated>2015-05-10T20:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Rapport */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport et archive de la version finale ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20958</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20958"/>
				<updated>2015-05-10T20:00:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Retour des professionnels : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’unanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
[[Fichier:Outils_test.zip]] &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre : a &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20901</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20901"/>
				<updated>2015-05-10T14:25:03Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Choix techniques : matériel et logiciels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
Pour l'impression 3D : Solidworks, Cura 14.12 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’hunanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
En cours de publication &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre A &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20899</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20899"/>
				<updated>2015-05-10T13:37:20Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Prévisionnel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHU (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’hunanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
En cours de publication &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre A &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20898</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20898"/>
				<updated>2015-05-10T13:36:50Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Présentation générale du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHR (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’hunanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
En cours de publication &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre A &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20719</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20719"/>
				<updated>2015-05-06T15:28:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Douchette */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHRU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHRU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHR (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’hunanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
En cours de publication &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre A &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20694</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20694"/>
				<updated>2015-05-06T08:44:08Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Retour des professionnels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHRU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHRU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHR (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’hunanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
En cours de publication &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre A &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|500px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20693</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20693"/>
				<updated>2015-05-06T08:43:23Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Retour des professionnels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHRU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHRU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHR (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’hunanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ils souhaiteraient également une fonctionnalité en plus, à savoir une alerte automatique pour indiquer les médicaments qui seront périmés dans moins de 3 mois (car ils doivent faire en sorte de les utiliser en priorité pour éviter les pertes).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
En cours de publication &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre A &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|500px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20692</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20692"/>
				<updated>2015-05-06T08:39:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : /* Prototype 4 :Saisie avec une douchette */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHRU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHRU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHR (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’hunanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 : Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
En cours de publication &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre A &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|500px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20690</id>
		<title>Tracabilité hopital</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Tracabilit%C3%A9_hopital&amp;diff=20690"/>
				<updated>2015-05-06T07:21:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jbonvill : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Présentation générale du projet==&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
Améliorer la traçabilité des médicaments au CHRU de Lille.&lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
&lt;br /&gt;
Les médicaments qui sont livrés à la pharmacie du CHRU de Lille sont tous répertoriés lors de la livraison. Ainsi, en cas de retrait de lot, il est possible de savoir immédiatement si un des médicaments a été stocké à la pharmacie et / ou dispensé. Actuellement, les données sont entrées à la main, avec tous les risques d'erreurs que cela comporte.&lt;br /&gt;
&lt;br /&gt;
====Description du projet==== &lt;br /&gt;
&lt;br /&gt;
Le but de ce projet est de proposer une solution permettant d'automatiser ces différentes tâches. A partir d'un datamatrix présent sur chacune des boîtes, il est possible d'extraire les données utiles (n° CIP du médicament, date de péremption, n° de lot) et de les sauvegarder dans une base de données.&lt;br /&gt;
&lt;br /&gt;
Il faudra aussi écrire une application web permettant d’accéder aux données au travers d'un navigateur internet avec outil de recherche.&lt;br /&gt;
&lt;br /&gt;
Une expérimentation à grande échelle est envisagée en avril ou mai 2015.&lt;br /&gt;
&lt;br /&gt;
Lors d'une alerte de retrait de lot par l'ANSM (Agence Nationale de Sécurité du Médicament), il est possible de recevoir un courriel (avec n° CIP et n° de lot concernés). Il conviendra de traiter automatiquement ce courriel afin de savoir si le lot a été livré à la pharmacie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Choix techniques : matériel et logiciels===&lt;br /&gt;
&lt;br /&gt;
Matériel : Lecteur de datamatrix [simple application sur un smartphone]&amp;lt;br&amp;gt;&lt;br /&gt;
    '''--&amp;gt; Solution choisie : utilisation d'une simple webcam (par souci de simplicité de mise en place en milieu hospitalier, et de faible coût)''' &amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams Logitech mises à disposition le 4/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb mis à disposition le 18/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 1 webcam Logitech rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
[&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt; --&amp;gt; 2 webcams et un hub usb rendu le 22/02/15&amp;lt;/span&amp;gt; ]&amp;lt;br&amp;gt;&lt;br /&gt;
Logiciels : Wamp server, Notepad++, PHPmyAdmin, Apache, Emacs, Okular &amp;lt;br&amp;gt;&lt;br /&gt;
Langages : C, Java, PHP, HTML, CSS, SQL &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prévisionnel===&lt;br /&gt;
&lt;br /&gt;
''' --&amp;gt; Axe principal choisi pour ce projet : Faire en sorte qu'il puisse être mis en place le plus simplement possible, à moindre coût.''' &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Création des différents prototypes : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 1 a été présenté le 25 février à Polytech à une responsable du CHU de Lille &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 2 n'a pas été présenté car nous l'avons rapidement abandonné &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 3 a été présenté le 11 mars 2015 à la pharmacie du CHR (à la même responsable ainsi qu'aux employés) &amp;lt;br&amp;gt;&lt;br /&gt;
- Le prototype 4 devra être présenté pour les vacances d'avril, au CHU. L'idée est de leur laisser le prototype pour qu'ils puissent le tester pendant cette période. Le prototype ne sera pas laissé en test , il sera présenté aux personnel hospitalier le 22 avril 2015 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Datamatrix==&lt;br /&gt;
&lt;br /&gt;
Le datamatrix est un code barre bidirectionnel. Il est l'évolution du code barre traditionnel. Il présente l'avantage de contenir plus d'informations. Ces informations sont concentrées sur une matrice, qui peut être décodée par des appareils équipés d'un appareil d'acquisition d'image (webcam, appareil photo ...). Les domaines d'application sont vastes (pharmacie, publicité, suivi de matériel, logistique ...)&lt;br /&gt;
&lt;br /&gt;
Dans notre projet il représente les données nécessaires à effectuer la traçabilité du médicament.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Capture du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir capturer un datamatrix nous avons choisi d'utiliser une webcam, qui a pour avantage d'être très économique. &lt;br /&gt;
[[File:Datamatrix_lecture.jpg|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Pour lire le flux vidéo de la webcam on a utilisé différentes méthodes : &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Méthode de screenshot :&amp;lt;br&amp;gt;&lt;br /&gt;
Principe : Quand l'utilisateur appuie sur le bouton &amp;quot;scanner&amp;quot; de notre page html, l'image se fige et s'enregistre sur l'ordinateur. Pour réaliser cela nous avons fait appel à des fonctions telles que html2canvas ainsi que des tutoriels internet que nous avons adapté pour l'application.&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Capture_dtmx.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-Méthode avec Motion &amp;lt;br&amp;gt;&lt;br /&gt;
L'idée ici était de pouvoir lire le flux vidéo de 6 webcams en même temps, afin de pouvoir réaliser un convoyeur qui prendrait en photo le datamatrix, quelle que soit la position du médicament. Cette solution a rapidement été abandonnée de par la longueur de l'acquisition.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Méthode avec un programme issu de la foxcam &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Scan datamatrix.png|300px|thumb|center]]&lt;br /&gt;
Nous nous sommes donc tourné vers un programme en C issu de la foxcam pour pouvoir prendre une capture. Cette méthode est plus optimale, on obtient une meilleure image et le datamatrix est de meilleure qualité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
C'est donc cette méthode qui a été retenue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note : La capture des datamatrix se révèle impossible avec les webcams embarquées (première limite de notre projet). Nous avons résolu ce problème grâce aux webcams prêtées qui sont de bien meilleure qualité. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Décodage du Datamatrix====&lt;br /&gt;
&lt;br /&gt;
Afin de décoder les datamatrix nous avons effectué quelques recherches. Elles nous ont amené à utiliser l’utilitaire suivant: libdmtx sur http://www.libdmtx.org/&lt;br /&gt;
&lt;br /&gt;
Il nous permet de les décoder sous différentes plateformes. Une fois l'utilitaire installé sur nos ordinateurs nous avons décidé de le tester. Pour cela : &amp;lt;br&amp;gt;&lt;br /&gt;
-1 Prendre une photo contenant un datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
-2 Tapez la commande suivante dans le fichier où se situe la photo: dmtxread –n nom_du_fichier. &amp;lt;br&amp;gt;&lt;br /&gt;
-3 Comparer avec le résultat avec le site suivant : http://boy.co.ua/decode.php &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Exemple : &amp;lt;br&amp;gt;&lt;br /&gt;
Soit le datamatrix suivant :&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dtmx.png|300px|thumb|center]]&lt;br /&gt;
Le résultat est le suivant : 010340093592455117150900103RLC50715 &amp;lt;br&amp;gt;&lt;br /&gt;
Dans ces informations nous avons le CIP13, la date et le numéro de lot. Les documentations trouvées sur internet nous ont permis d'identifier ces éléments. La façon de lire le datamatrix issu d'un médicament est la suivante : &amp;lt;br&amp;gt;&lt;br /&gt;
Entre 01 et 17 nous avons le CIP13 : 3400935924551 (nom du médicament) &amp;lt;br&amp;gt;&lt;br /&gt;
Entre le 17 et le 10 on a la date : 150900 soit le : 00/09/2015 &amp;lt;br&amp;gt;&lt;br /&gt;
Puis entre le 10 et le 91 on a le numéro du lot : 3RLC50715 (attention, le 91 n'est pas toujours présent) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un script permettant d'obtenir le CIP13, la date et le numéro de lot: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Décodage.zip|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
Résultat du script : [[File:Resultat_script.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Attention : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons remarqué que suivant la distance du Datamatrix et la luminosité ambiante, l'application pouvait être défaillante. &amp;lt;br&amp;gt;&lt;br /&gt;
Les webcams empruntées règlent partiellement le problème de la luminosité, car la seule contrainte restant est tout simplement de ne pas se trouver à contre-jour (ie face à une fenêtre) &amp;lt;br&amp;gt;&lt;br /&gt;
Pour la distance, l'essai de lecture sur une dizaine de médicaments a permis de trouver la distance optimale (qui fonctionne toujours) : entre 6 et 7 cm. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:distance.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Les Bases de données==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Code permettant de créer la base de données====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu télécharger sur le site de l'ANSM (www.ansm.sante.fr) les PDF contenant tous les médicaments commercialisés, ainsi que les informations suivantes : CIS, Dénomination de la spécialité, Titulaire de l'AMM, CIP7, CIP13, Nom de la Présentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Etant donné qu'il y a 9 PDF de 200 pages chacun, nous avons décidé d'écrire un programme permettant de créer un fichier par spécialité, afin de les incorporer dans notre base de donnée. &amp;lt;br&amp;gt;&lt;br /&gt;
Avec Okular nous avons pu convertir ces PDF en fichiers texte relativement exploitables. Sous Windows, les applications testées se contentent de mettre bout à bout, sans espace, chaque chaine trouvée. Okular passe à la ligne après chaque chaine. Cependant certaines chaines sont groupées ensemble, et lors d'une suite de texte à la ligne, cette deuxième partie se retrouve bien plus bas. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Avancée du code C :''' &amp;lt;br&amp;gt; &lt;br /&gt;
- Création du fichier contenant le CIS : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant la Dénomination de la spécialité : pas encore traité &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Titulaire de l'AMM : en cours (reste le problème des chaines groupées) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP7 : ok (petit bug à régler) &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le CIP13 : ok &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du fichier contenant le Nom de la Présentation : en  cours (reste le problème de la seconde partie de phrase manquante) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Ce code a été par la suite abandonné, car nous avons trouvé sur une autre page de l'ANSM des fichiers .txt contenant les informations que nous voulions. Les modifications que nous devions faire sur ces fichiers étant minimes, nous l'avons fait directement en php.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Base De Données====&lt;br /&gt;
Une fois les données récupérées on a créé un script php qui nous permet de peupler les bases plus facilement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On a peuplé nos bases à partir de la version 2&amp;lt;br&amp;gt;&lt;br /&gt;
Peuplement de nos bases avec ses évolutions :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Bdd.JPG|700px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Étapes d'un prototype ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cycle_vie_proptotype.png|600px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
==Prototypes==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====Prototype 1 : Application à une webcam====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- On peut réaliser un scan &amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix qui fonctionne &amp;lt;br&amp;gt;&lt;br /&gt;
- Non prise en charge des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application : =====&lt;br /&gt;
&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P1 Accueil.png|500px|thumb|center|Page d'accueil de l'application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Ajout.png|500px|thumb|left|Ajout d'un médicament]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sur cette dernière image on voit bien que si la bonne distance entre la webcam et le datamatrix n'est pas respectée, l'image n'est pas nette, et donc le décodage ne peut se faire.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ce premier prototype est très engageant pour eux. &amp;lt;br&amp;gt;&lt;br /&gt;
Les modifications qu'ils souhaitent sont : &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel (employé débutant - employé expérimenté - administrateur) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle (au cas où le datamatrix soit inconnu de la base, ou X problème) &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel (qui a fait quoi et quand)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : &amp;lt;br&amp;gt;&lt;br /&gt;
Il est pour eux inutile d'afficher en continu le flux vidéo vu par la webcam sur la page de saisie. Nous avons donc convenu d'afficher une photo du médicament scanné à la place, afin de confirmer à l'utilisateur qu'il correspond à celui qu'il a scanné.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 2 : Application avec un tunnel d'images====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
Cahier des charges :&amp;lt;br&amp;gt;&lt;br /&gt;
- Cahier des charges initial&amp;lt;br&amp;gt;&lt;br /&gt;
- Rajout de plusieurs webcams pour pouvoir scanner un médicament sur un tapis (convoyeur) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Moniteur de contrôle avec motion&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons constaté que l’utilitaire motion ne nous satisfait pas pour la capture du datamatrix. L'acquisition est beaucoup trop longue, et l'application serait lourde en terme de ressources.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt; Pour ces raisons, ce prototype a été abandonné.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 3 : Intégration des bases de données dans le prototype 1 ====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
&lt;br /&gt;
Cahier des charges : &amp;lt;br&amp;gt;&lt;br /&gt;
- Extraction des données du datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Gérer le niveau du personnel  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une saisie manuelle  &amp;lt;br&amp;gt;&lt;br /&gt;
- Avoir une traçabilité de l'ajout effectué par le personnel   &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
- Intégration des bases de données&amp;lt;br&amp;gt;&lt;br /&gt;
- Capture des datamatrix  &amp;lt;br&amp;gt;&lt;br /&gt;
- Réalisation d'ajout en mode semi-automatique &amp;lt;br&amp;gt;&lt;br /&gt;
- Gestion du personnel &amp;lt;br&amp;gt;&lt;br /&gt;
- Authentification unique &amp;lt;br&amp;gt;&lt;br /&gt;
- Saisie manuelle&amp;lt;br&amp;gt;&lt;br /&gt;
- Mise en place d'une traçabilité du personnel et des médicaments &amp;lt;br&amp;gt;&lt;br /&gt;
- Identification du cis, cip 13 avec le nom du médicament &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Présentation de l'application =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P3_operateur_ajout.png|500px|thumb|center|Page pour la connexion des opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_accueil.png|500px|thumb|left|Page d'accueil de l’administrateur]]&lt;br /&gt;
[[File:P3_admin_ajout.png|500px|thumb|center|Page pour consulter les ajouts]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_connexion.png|500px|thumb|left|Page pour consulter l'historique des connexions]]&lt;br /&gt;
[[File:P3_admin_medoc.png|500px|thumb|center|Page pour consulter les médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P3_admin_pero.png|500px|thumb|center|Page de modification du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels : =====&lt;br /&gt;
&lt;br /&gt;
Compte rendu de la présentation du prototype 3 au CHU de Lille :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans leur stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- Visualiser le CIP13 et le CIS est inutile pour eux (nous pensons donc à créer un bouton ‘’détails'’. De même pour l’historique et la saisie manuelle.&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
- La création d’un convoyeur ne fait pas l’hunanimité du personnel.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Conclusion :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Satisfaction de l’ensemble du personnel présent pour ce premier prototype qui leur était présenté.  Il faut cependant en priorité :&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du Datamatrix.&amp;lt;br&amp;gt;&lt;br /&gt;
- Créer une douchette avec la webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
- Epurer l’écran au maximum et ajouter la localisation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prototype 4 :Saisie avec une douchette====&lt;br /&gt;
&lt;br /&gt;
===== Application =====&lt;br /&gt;
- Reprise du cahier des charges du prototype 1 &amp;lt;br&amp;gt;&lt;br /&gt;
- Remplacement de l'alerte de l'ANSM par un outil de recherche &amp;lt;br&amp;gt;&lt;br /&gt;
- Donner la localisation prévue pour le médicament dans le stock&amp;lt;br&amp;gt;&lt;br /&gt;
- Imprimer sur une étiquette (post-it) cette localisation, ainsi que le nom du médicament en petit (imprimante d’étiquettes Isiscoder PD41).&amp;lt;br&amp;gt;&lt;br /&gt;
- 2 niveaux de comptes suffisent, un compte administrateur et un compte pour chaque employé.&amp;lt;br&amp;gt;&lt;br /&gt;
- Sur la page du scan, épurer au maximum : Nom, numéro et photo du médicament, date et localisation suffisent.&amp;lt;br&amp;gt;&lt;br /&gt;
- Améliorer la rapidité de l’acquisition du datamatrix au maximum.&amp;lt;br&amp;gt;&lt;br /&gt;
- Pouvoir utiliser la webcam comme une douchette pour plus de facilité.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Développement :&amp;lt;br&amp;gt;&lt;br /&gt;
L'application web est terminée. Elle communique avec le programme de lecture des datamatrix via un serveur websocket .&amp;lt;br&amp;gt;&lt;br /&gt;
Douchette modélisation 3D réalisée :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img.png|500px|thumb|center]]&amp;lt;br&amp;gt;&lt;br /&gt;
La tige sert de guide pour la distance optimale à placer entre la webcam et le datamatrix. La webcam se place sur le dessus, et le socle dans la fente de la douchette. A l'intérieur de celle ci se place la plaque d'essai sur laquelle se trouve l'Arduino Nano et le bouton poussoir. Le bouton est accessible par le trou sous le guide. Le trou sous la douchette sert à brancher l'Arduino. Enfin, les tétons permettent de fixer les 2 coques ensemble, qui seront vissées dans le trou créé pour y placer une vis de serrage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la première impression (arrêtée à moitié de l'impression car la tige se décollait du plateau) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img1.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img2.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On peut voir que l'arduino rentre parfaitement dedans. Il faut donc modifier le fichier afin de supprimer la tige, que nous ajouterons plus tard différemment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de l'impression du second prototype :&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img3.jpg|400px|thumb|left]]&lt;br /&gt;
[[File:Img4.jpg|400px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'arduino rentre toujours très bien dedans. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Avec la webcam et le câble USB branchés : &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img5.jpg|300px|thumb|left]]&lt;br /&gt;
[[File:Img6.jpg|300px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Séparation des outils d'affichage et de la partie capture du datamatrix &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
- Création du programme de prise d'image et de décodage &amp;lt;br&amp;gt;&lt;br /&gt;
- Création du programme d'envoi des données sur l'application &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La séparation est maintenant opérationnelle. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:00.JPG|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Le prototype fonctionne avec la douchette. Par un simple appui sur le bouton on est capable d'afficher le résultat dans une page web.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Présentation de l'application :=====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_accueil.png|500px|thumb|left|Page d'accueil]]&lt;br /&gt;
[[File:P4_operateur_accueil.png|500px|thumb|center|Page d'accueil pour les opérateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_ajoutmanu.png|500px|thumb|left|Page permettant l'ajout manuel]]&lt;br /&gt;
[[File:P4_operateur_historique.png|500px|thumb|center|Page affichant l'historique des médicaments]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_operateur_recherche.png|500px|thumb|left|Page de recherche d'un médicament]]&lt;br /&gt;
[[File:P4_adm_accueil.png|500px|thumb|center|Page d'accueil pour les administrateurs]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:P4_admin_connexions.png|500px|thumb|left|Page qui permet de visualiser les connexions]]&lt;br /&gt;
[[File:P4_admin_personnel.png|500px|thumb|center|Page permettant la gestion du personnel]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Retour des professionnels =====&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Lors de l'entretien avec les responsables du service, nous avons pu présenter notre travail (le prototype 4 avec la douchette réalisée).&lt;br /&gt;
Les conclusions ont été très bonnes, dans la mesure où ils ont dit que nous avions répondu au cahier des charges, en réalisant quelque chose de fonctionnel et de simple à mettre en oeuvre. L'interface web leur convient parfaitement. En ce qui concerne notre prototype de douchette, nous avions choisi une webcam et une impression 3D de la coque pour leur faible coût, mais il s'avère que l'achat d'une douchette n'est pas tellement un problème pour eux par rapport aux finances qu'ils ont (pour rappel une douchette pour datamatrix coûte environ 300€, et il n'en auraient besoin que d'une seule). Notre prototype leur a donc simplement permis de pouvoir constater l'efficacité et la simplicité de notre application. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons également beaucoup échangé sur leurs attentes futures. Lors de la réalisation de notre projet, nous avons traité la partie optimisation de l'acquisition des datamatrix. Cependant, ils souhaiteraient faire la même chose avec leurs logiciels. Actuellement, ils sont obligés de rentrer deux fois les médicaments dans leurs deux logiciels (un est interne à l'hôpital, il leur permet de gérer leur stock, et l'autre, GEF, est un logiciel privé qui permet de faire la gestion financière de leurs commandes). Dans notre projet nous avons amélioré la partie acquisition sur leur propre logiciel (en effet ils n'ont plus qu'une seule donnée à rentrer, le nombre de lots). Il faudrait donc faire un parallèle avec leur second logiciel. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
L'idée retenue est de garder en mémoire les données qui nous intéressent lors du scan, et de les renvoyer sur la fenêtre du logiciel privé par saisie sur clavier virtuel. On scanne, toute notre partie s'exécute, puis leur second logiciel attend les informations. Une partie des données préalablement scannées est renvoyée sur la fenêtre courante (qui est le second logiciel) grâce au clavier virtuel, et par succession de tabulations et d'envoi de la donnée souhaitée, les champs se remplissent un à un. Il restera à l'utilisateur à vérifier rapidement, puis appuyer sur entrée. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode n'est certes pas très &amp;quot;propre&amp;quot;, mais comme le logiciel est privé nous pensons qu'elle est la plus &amp;quot;simple&amp;quot; à mettre en oeuvre. Notons que nous avons les droits de lecture sur les bases de données de ce logiciel privé. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pour d'autres applications ==&lt;br /&gt;
Si vous souhaitez utiliser notre méthode pour vos applications:  (Attention cette méthode a été développée sous Linux)&amp;lt;br&amp;gt;&lt;br /&gt;
=== Configuration de Linux ===&lt;br /&gt;
Afin que les outils proposés dans la suite fonctionnent, il est important d'installer :&amp;lt;br&amp;gt;&lt;br /&gt;
- Serveur web &amp;lt;br&amp;gt;&lt;br /&gt;
Nous vous proposons d'utiliser LAMP ( https://wiki.debian.org/fr/Lamp ) . Pour plus de facilités nous vous conseillons d'utiliser un fichier nommé public_html. Pour cela suivez le lien suivant : http://doc.ubuntu-fr.org/apache2#mod_userdir_gerer_les_dossiers_utilisateur et allez au paragraphe 6.4 mod_userdir gérer les dossiers utilisateurs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Serveur websockets &amp;lt;br&amp;gt;&lt;br /&gt;
Le serveur websockets se trouve à l'adresse suivante : http://libwebsockets.org.&amp;lt;br&amp;gt; Pour l'installer, utilisez ces commandes : apt-get install libwebsockets-dev &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
-Pour les datamatrix&amp;lt;br&amp;gt;&lt;br /&gt;
La librairie utilisée dans ce projet est la suivante :http://www.libdmtx.org/ &amp;lt;br&amp;gt; &lt;br /&gt;
Le wiki de la librairie : http://libdmtx.wikidot.com/general-instructions&amp;lt;br&amp;gt; &lt;br /&gt;
Source possible où l'on peut télecharger le projet : http://sourceforge.net/projects/libdmtx/&lt;br /&gt;
&lt;br /&gt;
=== Lecture et décodage des datamatrix ===&lt;br /&gt;
&lt;br /&gt;
Nous mettons à disposition nos fichiers pour pouvoir décrypter les datamatrix. &amp;lt;br&amp;gt;&lt;br /&gt;
Procédure d'installation sur linux :&amp;lt;br&amp;gt;&lt;br /&gt;
1) Configurez votre Linux &amp;lt;br&amp;gt;&lt;br /&gt;
2) Téléchargez le projet à l'adresse suivante :&lt;br /&gt;
En cours de publication &amp;lt;br&amp;gt;&lt;br /&gt;
3) Compilez l'ensemble du projet en effectuant un make &amp;lt;br&amp;gt;&lt;br /&gt;
4) Dans le projet allez dans le fichier Cliches.&amp;lt;br&amp;gt;&lt;br /&gt;
5) Afin d'identifier le périphérique associé à votre webcam tapez dans un terminal : ls -l /dev/video*&amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande :&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6) Connectez votre webcam sur le port USB &amp;lt;br&amp;gt;&lt;br /&gt;
7) Refaire la commande de l'étape 5 &amp;lt;br&amp;gt;&lt;br /&gt;
Résultat de la commande : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Terminal_commande_ls2.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
On voit que le /dev/video1 vient d'apparaitre. Il correspond à notre webcam.&amp;lt;br&amp;gt;&lt;br /&gt;
8) Lancez le serveur : ./ capture -s /dev/video* &amp;amp; (le * correspond aux numéro de votre webcam. Dans notre cas le * sera remplacé par 1) &amp;lt;br&amp;gt;&lt;br /&gt;
9) Dans le projet allez dans le fichier lecture_datamatrix &amp;lt;br&amp;gt;&lt;br /&gt;
10) Lancez le serveur websocket : ./lecture_datamtrix &amp;lt;br&amp;gt;&lt;br /&gt;
11) Décompressez et placez ce dossier dans votre serveur web  &amp;lt;br&amp;gt;&lt;br /&gt;
Fichier : [[Fichier:Outil_test.zip]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
12) Allez à l'adresse de votre site . Si c'est une application locale tapez 127.0.0.1/~user/outil_test &amp;lt;br&amp;gt;&lt;br /&gt;
13) Tapez la lettre A &amp;lt;br&amp;gt;&lt;br /&gt;
14) Si tout est bien placé vous devriez voir apparaitre le résultat du scan &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NB : Pour afficher la valeur d'un datamatrix sans lancer le serveur websocket, il faut que la librairie libdmtx soit installée. &amp;lt;br&amp;gt;&lt;br /&gt;
1) Allez dans le fichier Clichés &amp;lt;br&amp;gt;&lt;br /&gt;
2) Reprendre les étapes 5 et 6. Si vous avez déjà lancé le serveur ignorez cette étape &amp;lt;br&amp;gt;&lt;br /&gt;
3) Prendre en photo le datamatrix : ./capture -c &amp;gt;nom du fichier .png &amp;lt;br&amp;gt;&lt;br /&gt;
4) Pour pouvoir le décoder : dmtxread -n -N1 nom du fichier.png&lt;br /&gt;
&lt;br /&gt;
=== Application Web ===&lt;br /&gt;
&lt;br /&gt;
Pour créer votre propre application vous aurez besoin de certains outils dans votre application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un simple affichage des scans :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       window.WebSocket=(window.WebSocket||window.MozWebSocket);&lt;br /&gt;
       var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&lt;br /&gt;
       websocket.onopen=function(){ $('h1').css('color','green'); };&lt;br /&gt;
       websocket.onerror=function(){ $('h1').css('color','red'); };&lt;br /&gt;
       websocket.onmessage=function(message){&lt;br /&gt;
       console.log(message.data);&lt;br /&gt;
 $('#messages').append($('balise p',{ text: message.data }));};&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 NB : balise est à remplacer par &amp;lt; code html ici : p &amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Entre les balises &amp;lt;body&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
une balise div avec un l'id suivant :messages&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Pour un traitement du code du datamatrix :&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Schéma : &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Appliweb.png]]&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Mettre le code suivant entre les balises &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; de la page qui vous servira de réception de la valeur des datamatrix : &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  window.WebSocket=(window.WebSocket||window.MozWebSocket);&amp;lt;br&amp;gt;&lt;br /&gt;
  var websocket=new WebSocket('ws://127.0.0.1:9000','myprotocol');&amp;lt;br&amp;gt;&lt;br /&gt;
  websocket.onmessage=function(message){&amp;lt;br&amp;gt;&lt;br /&gt;
  console.log(message.data);&amp;lt;br&amp;gt;&lt;br /&gt;
  document.location.href='nom_de_votre_fichier.php?value='+message.data;};&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce code nous permet de recevoir les webscockets et de l'envoyer à la page voulue. Pour cela il faut remplacer nom_de_fichier.php par le nom du fichier choisi.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour récupérer la valeur du scan il faudra placer cette ligne dans le fichier destination : &amp;lt;br&amp;gt; &lt;br /&gt;
 &amp;lt;?php $datamatrix=$_GET['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Douchette===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si vous souhaitez créer un objet sur imprimante 3D, voici comment nous avons procédé (c'est à la portée de tous) :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1) Utilisez un logiciel de création 3D (nous avons utilisé Solidworks mais il en existe d'autres moins volumineux et gratuits).&amp;lt;br&amp;gt;&lt;br /&gt;
2) Enregistrez votre modèle 3D en .smv &amp;lt;br&amp;gt;&lt;br /&gt;
3) Téléchargez le logiciel correspondant à votre imprimante 3D (Cura 14.12 pour nous), et ouvrez votre fichier .smv &amp;lt;br&amp;gt;&lt;br /&gt;
4) Vérifiez votre pièce (la coller au plateau, mettre un socle si nécessaire, vérifier la durée d'impression et regarder quelles zones doivent être pleines ou non) &amp;lt;br&amp;gt;&lt;br /&gt;
5) Enregistrez et mettre ce fichier sur l'imprimante. &amp;lt;br&amp;gt;&lt;br /&gt;
6) Lancer l'impression (attention, restez les 5 premières minutes afin de vérifier que le support ne se décolle pas) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Sur la première image on peut voir le début de l'impression (socle + pièce). &amp;lt;br&amp;gt;&lt;br /&gt;
Sur la seconde image on peut bien voir le socle imprimé (quadrillage) pour que l'ensemble de la pièce adhère bien au plateau. Nous ne pouvions l'imprimer dans l'autre sens car nous avons fait des tétons pour que l'assemblage des deux parties rendent immobile l'ensemble. Le socle s'enlève très facilement en tirant dessus. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Img10.jpg|500px|thumb|left]]&lt;br /&gt;
[[File:Img11.jpg|500px|thumb|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Remarque : Les deux moitiés de notre douchette nous on prit chacune 3 heures d'impression, en qualité moyenne. Pour une qualité fine, il aurait fallu doubler.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bilan  ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nous avons pu voir comment se passe une gestion de projet en milieu professionnel, en particulier le fait qu'un cahier des charges évolue sans cesse au cours d'un projet. En effet, à chaque démonstration le client peut s'imaginer plus facilement comment sera utilisé ce qu'il attend, et donc voir par lui même ce qui pourrait poser problème lors de l'utilisation au quotidien. Une redéfinition du cahier des charges est donc à envisager à chaque présentation de l'avancée du travail. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
De plus, nous avons également eu des changements à faire sans même avoir besoin de demander l'avis des clients. En effet, lorsque l'on s'aperçoit par nous même que le prototype ne pourra aboutir à une solution peu contraignante, il est inutile de persister dans la même direction (exemple avec l'utilisation de motion). Car en général, un petit inconvénient pour les développeurs en est un gros pour les clients (exemple avec la rapidité de notre système de scan automatique). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pour conclure, ce projet S8 s'est bien déroulé, nous pensons avoir répondu correctement au cahier des charges (ainsi que les professionnels). &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rapport ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jbonvill</name></author>	</entry>

	</feed>