Académique Documents
Professionnel Documents
Culture Documents
SANTE
CMS SAINT RAPHAËL
DE NYEKONAKPOE
RAPPORT DE STAGE
Lévi Kankoé SALLAH
LICENCE PROFESSIONNELLE IS
Institut Universitaire de Technologie
Université de Bordeaux1
2006-2007
Maître de Stage
Dr Sénouwa AMOUSSOU
RÉSUMÉ
ABSTRACT
Inaugurated by the Togolese Health Ministry in October 2006, the Saint Raphael
Medical and Social Center find it interesting to create a process which would help to
estimate bone age by analyzing digitized radiographies. This would help to estimate the
age of children and teenagers whose civil status data are unknown, especially the
birthday. This report describes the analysis of the problem and the creation of a
program capable to come up to the formulated expectation.
REMERCIEMENTS
SOMMAIRE
INTRODUCTION ....................................................................................................... 7
1. LE CENTRE MEDICO-SOCIAL ST RAPHAËL A NYEKONAKPOE ................ 8
1.1. PRESENTATION : UN CMS AU SEIN D’UNE CAPITALE AFRICAINE .................. 8
1.1.1. UNE VILLE SUR LA COTE OUEST-AFRICAINE ............................................................ 8
1.1.2. LE CMS AU SEIN DU DISPOSITIF ADMINISTRATIF TOGOLAIS ................................. 9
1.1.3. ACTIVITES ET MISSIONS ET PROJETS........................................................................... 9
1.1.4. DES CHIFFRES ET VUES D’ENSEMBLE ......................................................................... 9
1.2. L'INFORMATIQUE AU CMS ET DANS LA VILLE DE LOME EN GENERAL ........ 12
1.2.1. LE SYSTEME D’INFORMATION DU CMS .................................................................. 12
1.2.2. PRINCIPAUX PRESTATAIRES DE SERVICES INFORMATIQUES DANS LA VILLE ...... 12
2. DEVELOPPEMENT DU LOGICIEL.................................................................... 13
2.1. LA QUESTION................................................................................................ 13
2.1.1. L’IDEE ET LE BUT DU LOGICIEL ................................................................................ 13
2.1.2. DES PRODUITS SEMBLABLES EXISTENT-ILS DEJA SUR LE MARCHE ? .................... 16
2.2. LA PHASE D’ANALYSE ................................................................................... 17
2.2.1. FAISABILITE ................................................................................................................. 17
2.2.2. LES FONCTIONNALITES .............................................................................................. 17
2.2.3. OUTILS ET METHODES CHOISIES .............................................................................. 18
2.3. LE DEVELOPPEMENT ................................................................................... 18
2.3.1. LA PLANIFICATION INITIALE DU TRAVAIL............................................................... 18
2.3.2. LE FORMATAGE DE L’IMAGE EN ENTREE ................................................................ 18
2.3.3. DETERMINATION DE RELATION ENTRE AGE ET NOMBRE D’OS .......................... 19
2.3.4. LA LOGIQUE DE FONCTIONNEMENT DE NOTRE PROGRAMME ............................ 20
2.3.5. LES DETAILS TECHNIQUES DE PROGRAMMATION .................................................. 21
2.3.6. L’INTERFACE GRAPHIQUE ......................................................................................... 21
2.3.7. BILAN D’ASPECT MANAGERIAL ................................................................................. 21
2.4. LES PISTES D’EVOLUTION POSSIBLES ........................................................... 21
2.4.1. L’AMELIORATION DE L’INTERFACE .......................................................................... 21
2.4.2. L’IDENTIFICATION PRECISE DE CERTAINS OS ......................................................... 21
2.4.3. L’ELABORATION D’ESTIMATIONS POUR LE 12-15 ANS ........................................... 22
2.4.4. AMELIORATION EVENTUELLE DES CRITERES DE CONCLUSION ........................... 22
2.4.5. LE MISE EN PLACE D’UN INDICATEUR DE TAUX D’ERREUR .................................. 22
2.4.6. INTEGRATION EN MODULE AUX LOGICIELS PATIENT .......................................... 22
CONCLUSION ........................................................................................................... 23
ANNEXES .................................................................................................................. 24
Introduction
Mon stage de fin d'études de Licence Professionnelle Informatique Option Image et Son
s'est déroulé du 05 Mars au 22 Juin 2007 au CMS Saint Raphaël de Nyékonakpoé, à Lomé
au Togo, sous la responsabilité du Dr Sénouwa AMOUSSOU.
La première partie du rapport présente le cadre du stage dans sa globalité, les activités du
CMS et les services informatiques qu’il est possible de trouver dans la ville de Lomé. La
seconde partie regroupe l’analyse du projet, l’architecture de la démarche et les résultats
obtenus.
La ville de Lomé su situe en bordure de mer sur la côte ouest-africaine. C’est la capitale du
Togo, ancienne colonie allemande, puis française, devenue indépendante en 1960.
Le pays a une superficie de 56600 km2. Il est limité respectivement au Nord, à l’Est et à
l’Ouest par le Burkina Faso, le Bénin et le Ghana. Au Sud on trouve l’Océan Atlantique au
bord duquel est construite la ville de Lomé.
La population du Togo est estimée à sept Millions d’habitants dont un million vivrait à Lomé.
Lomé est donc la capitale économique et politique du Togo. Le dialecte communément parlé
et la mina. Le Français est la langue de d’administration. La ville centralise 50% de l’activité
économique du pays. Elle abrite la première des deux universités du pays.
Le PBI par habitant était estimé à 340 dollars US en 2004
La croissance est estimée à 3% et le secteur des services représente 40% de l’activité globale.
En 2005 on comptait 300000 abonnés au réseau internet.
Figure 1:
Le CMS Saint Raphaël se situe dans les quartiers Ouest de la ville de Lomé, dans le district
sanitaire n° 4 qui regroupe trois structures sanitaires :
• CMS Nyékonakpoé ;
• CMS UTB Circulaire ;
• Centre de Santé de Kodjoviakopé.
La ville de Lomé comporte au total 5 districts sanitaires qui quadrillent la ville
Des cabinets médicaux et autres centres de santé privés existent dans le district n°4.
Le CMS Nyékonakpoé a été inauguré le 08 Mars 2005.
• Le siège :
S’étalant sur une superficie de 500 m2 le centre possède un total de onze salles, aménagées
pour ses diverses prestations. La population cible du CMS, population du district n°4 est
estimée à 72000 habitants environs.
• La gestion administrative
L’organisme ayant financé la construction du centre en a confié la gestion à la communauté
religieuse NDE.
• Le travail en équipe
Il implique différents acteurs en étroite collaboration sur le site. Des réunions d’équipe sont
périodiquement organisées.
•
Figure 2: District n°4: 72.000 hbts
Structures privées
UPS Accueil et
non agrées (24)
maison pour tous
Revendeurs informels de
CMS produits
Nyékonakpoé pharmaceutiques (17)
PUBLIC PRIVE
Directrice
Médecin
Sages-femmes
Techniciens Labo
Infirmières Secrétaire Agents de
Pharmacie
Accoucheuse
Chauffeur
Veilleur de nuit
Le Centre n’est pas informatisé dans tout son ensemble. Certaines données Patient sont
toujours consignées et sauvegardées dans un registre tenu de façon manuelle.
Des données numérisées sont conservées dans les ordinateurs au sujet des entrées et sorties et
de la disponibilité des produits pharmaceutiques.
La gestion administrative globale constitue l’autre partie du système d’information du CMS et
est faite par ordinateur.
Pour ses besoins en services informatiques, le CMS, comme toutes les PME de la place, a
recours aux services de prestataires locaux. Les principaux sont : CAFE Informatique, CIB
Inta, DEFI Informatique. Ces prestataires de services informatiques assurent pour la plupart
l’installation et l’équipement des parcs informatiques d’entreprises.
2. Développement du logiciel
2.1. La question
Il arrive parfois, qu’au CMS Nyékonakpoé le médecin reçoive un patient dont il ignore l’âge,
faute de données sur l’état civil du malade. Le problème se pose le plus souvent chez des
personnes d’un âge assez avancé. Mais il n’est pas très rare que l’on reçoive un jeune enfant
dont l’âge ne peut être certifié avec précision par aucun document écrit.
Les compétences d’un médecin lui permettent devant une telle situation, d’estimer
approximativement l’âge de l’individu en question. Il utilise alors le plus souvent une
radiographie du poignet ou du coude du malade. Ceci est possible grâce au principe suivant
lequel, le nombre, la taille et la position des « petits os » de ces articulations sont en rapport
avec l’âge de l’individu. L’estimation que peut faire un médecin, en se basant sur lesdits
éléments demeure assez subjective, d’où l’idée de mettre en place un processus de traitement
automatisé capable d’estimer de façon scientifique (et donc objective) l’âge d’un individu.
• L’idée du logiciel
Lorsqu’une lettre de demande de stage a été adressée au CMS, l’idée de ce logiciel a émergé
dans l’équipe médicale, car la préoccupation de l’estimation juste de l’âge osseux est un des
besoins fréquemment rencontrés dans le cadre des activités du centre. Ce sujet fût donc retenu
comme thème de stage à proposer à l’étudiant. Ce sujet avait fait quelques mois plus tôt l’objet
de débats juridiques dans le pays par rapport à la protection des mineurs.
• Le but visé
Il s’agirait en définitif d’obtenir un logiciel informatique qui prend en entrée une portion
d’image radiographique du poignet et que affiche en sortie le résultat correspondant à l’âge
estimé du patient.
Ce logiciel permettrait ainsi une meilleure adaptation des posologies des traitements, grâce
à une connaissance plus précise de l’âge physiologique de l’individu. Un autre but est aussi
de pouvoir être en mesure de prendre judicieusement des décisions médico-légales où l’âge est
un paramètre important. Il serait alors possible de préciser si un individu est mineur ou pas,
alors qu’on ne dispose d’aucun élément sur son état civil. Le CMS compte proposer cette
méthode au Ministère de la Santé, voire de l’Intérieur qui a souvent à prendre des décisions
légales au sujet d’ « enfants » « sans papiers ». La plupart de ces décisions sont en rapport avec
des questions de tutelle, d’autonomie et de responsabilité face à la justice.
• La forme du logiciel
Aucune forme précise n’avait été déterminée pour ce travail au départ. Aucun langage de
programmation, ni aucune architecture de travail n’étaient proposés au départ. Il nous
appartenait d’effectuer nous même l’analyse de la question et de juger des questions de
faisabilité.
La première idée de programmation que nous avons envisagée est celle qui serait basée sur la
détection de contours des os d’une articulation, permettant de les étiqueter et de les
dénombrer. Cette méthode nécessiterait un travail considérable en programmation. Elle aurait
le mérite d’être assez spécifique de la présente situation.
Une seconde idée se baserait sur l’utilisation l’histogramme en temps qu’image à analyser. Elle
serait plutôt imprécise et dépendrait de la qualité des clichés radiologiques.
3 mois et demi
5 ans
12 ans
Certains travaux ont été faits, qui sont en rapport plus ou moins direct avec notre sujet. Nous
les avons découverts en utilisant des moteurs de recherche internet.
Le logiciel LOGAETOS est un outil informatique d'aide à la détermination de l'âge osseux à
partir de radiographies du coude.
Il a été élaboré dans le cadre d'un DEA effectué dans le laboratoire d'Anthropologie
Biologique de la faculté de médecine de Marseille (*) par Mr Kbaier Pascal sous la direction du
Pr Panuel et du Dr Dutour au cours de l'année universitaire 2002/2003.
Par ailleurs nous avons retrouvé un thème central des Journées Françaises d’Informatique
Médicale qui est : analyse et d’images par le contenu en radiologie, indexation d’images
radiologiques d’âge osseux. Il était question de mettre en place un système informatique
capable de reconnaître les radiographies du poignet et de les classer en fonction de la tranche
d’âge suspectée par l’analyse d’image.
Les droits d’auteur ne nous ont pas permis d’avoir accès à ces aux résultats de ces travaux
pour les tester.
2.2.1. Faisabilité
Nous avons décidé de nous limiter au cas d’estimation de l’âge d’un enfant (entre 0 et 12 ans).
Cette tranche d’âge permet de garantir la faisabilité du projet. Cela permet, comme le montre
l’algorithme précédent, de limiter notre analyse aux radiographies du poignet. Sinon, il faudrait
en plus avoir à analyser les radiographies des membres inférieur et supérieur, du coude et des
crêtes iliaques.
Pour qu’un programme informatique prenne en charge adéquatement l’image des os du
poignet, il faut lui passer en entrée une image pré-formatée, ciblant avec précision les os du
carpe. Voir schéma ci-dessous
•
Figure 6: Image préformatée centrant le carpe
Il est alors possible, par traitement informatisé d’identifier les os sur cette image, ce qui traduit
l’âge de l’individu. Une détection de contours suivie d’étiquetage peut permettre l’identification
des os.
Au cours des nombreuses discussions que nous avons eu en équipe avec notre maître de
stage, il est ressorti que :
• Dans le cadre de mon stage dont la durée se limite à 16 semaines, nous devrons mettre en
place la succession des différentes étapes devant aboutir à l’estimation finale de l’âge de
l’individu.
• L’intégration de toutes ces étapes n’est pas exigée dans l’immédiat, mais serait envisagée si
les délais le permettent
• L’analyse de la question devra être détaillée et prévoir les manquements et insuffisances du
programme de façon à permettre d’évaluer la fiabilité des résultats et les éventuelles
marges d’erreur.
• Nous avons choisi d’opter pour l’utilisation des langages de programmation C++ et Java,
pour des raisons de meilleure maîtrise
2.3. Le développement
Nous avions établi la planification suivante qui prévoit la fin du projet eu 10 Juin 2007.
En raison du déplacement nous ne sommes arrivés sur le lieu de stage que le 12/03/2007.
Cette prévision affecte à la seule ressource humaine du projet toutes les tâches, lesquelles
s’enchaînent les unes au autres par des liens de type début-fin.
}
else
{
t(i,j)=0
noirs++;
}
}
}
Proportion = blancs x 1/blancs + noirs
La proportion trouvée est le pourcentage reflétant la surface occupée par les os du poignet
sur l’image en entrée.
Un autre paramètre important noté nombre d’os va être recherché. Il représente le nombre de
structures ellipsoïdes sur l’image. On doit donc pratiquer une reconnaissance de forme. C’est
sur l’image binaire que nous appliquons notre programme de reconnaissance de formes
elliptiques. Le code en annexe donne des détails de nos traitements. Le paramètre retourné par
le programme est NOMBROS qui représente le nombre de formes unies détectées dans
l’image. Et le programme conclut en affichant l’âge de 0 à 12 ans selon les critères simples
suivants :
Si NOMBROS = 2 alors âge = 12 mois environs
Si NOMBROS = 3 alors âge = 2 ans environs
Si NOMBROS = 4 alors âge = 3 ans environs
Si NOMBROS = 5 alors âge = 4 ans environs
Si NOMBROS = 7 alors âge = 6 ou 5 ans environs
Si NOMBROS = 9 alors
Si Pourcentage = 60% alors âge = 7-8 ans
Si Pourcentage = 60 – 70% alors âge = 8 – 10 ans
Si Pourcentage = 70 – 90% alors âge = 10 – 12 ans
Nous avons, par choix personnel opté pour la programmation en C++. Nous avons d’abord
procédé à une acquisition de l’image que nous avons ensuite chargée avec la librairie
cmubraphics. L’image est ensuite scannée pixel par pixel et on crée une image binaire partant
de l’image que l’on vient d’acquérir. Ce n’est qu’ensuite qu’on va effectuer une série de
traitements pour reconnaitre des formes géométriques dans l’image. Pour cela, on crée un
marqueur dont tous les pixels sont à zéro sauf les pixels du bord et on supprime tous les pixels
qui touchent le bord. On effectue quelques opérations d’érosion et on reconstruit l’image à
partir du marqueur. On balaie ensuite l’image pour isoler chaque forme restante. Les annexes
2 à 5 montrent quelques fragments du codé développé.
Nous avons développé une interface graphique très modeste en java qui charge l’image
préformatée stockée à un endroit sur la machine. Une fois cette image chargée, le bouton
ESTIMATION D’AGE fait appel à la fonction principale du programme. Les divers
traitements et calculs s’enchaînent et le résultat final est affiché dans le champ AGE.
La seule ressource humaine que nous constituions sur le projet a essayé gérer les délais et
jalons prévus en début de projet. La gestion et prévention des risques de retard nous avait fait
prévoir une marge de 15 jours. Cette marge s’est finalement révélée bien utile car les deux
dernières semaines avant la fin du stage ont été marquées par des exigences administratives
liées au retour sur Bordeaux.
Les os du carpe ont des formes bien différentes et sont reconnaissables les unes des
autres. Cet élément pourrait être exploité pour améliorer la précision des résultats obtenus. Par
exemple, comme le montre l’annexe 1, lorsqu’un os tel que le trapézoïde (de forme
triangulaire) fait son apparition, l’individu a entre 3 et 4 ans. D’autres critères morphologiques
et positionnels sont utilisables pour une meilleure précision de l’estimation. Cependant cela
semble devenir très rapidement complexe. Nous n’avons eu la possibilité d’aller plus loin dans
ce sens.
Les critères que nous avons utilisés ne nous permettent pas d’estimer l’âge des enfants entre
12 et 15 ans, car à ces âges les aspects morphologiques et positionnels des os du carpe
semblent devenir statiques. Il n’y plus de changement flagrant car le majorité des os a déjà
atteint sa maturité de croissance. Il est donc nécessaire de réfléchir à d’autres critères
permettant de gérer ces cas sans confusion. Nous pensons qu’on pourrait rechercher sur les
images des signes distinctifs très particuliers comme la saillie de la pointe de l’os crochu qui
semble n’être bien visible qu’à 15 ans.
Dans notre travail, le cas NOMBROS = 6 correspond à une erreur. En effet, naturellement le
« 6ème et le 7ème » os apparaissent quasi simultanément. On peut néanmoins imaginer des cas où
physiologiquement, l’un apparait avant l’autre. Il faut que le logiciel puisse avoir une réponse
adaptée à ce cas. De plus NOMBROS = 7 correspond à une tranche d’âge de 5 à 6 ans.
Comment être plus précis ? Il nous faudrait un autre critère discriminatif.
Il s’agirait d’un indicateur qui établirait à chaque fois la marge d’erreur qu’on pourrait avoir au
sujet du résultat qu’indique le logiciel.
Notre logiciel existe actuellement comme une seule entité autonome servant uniquement et
strictement à la recherche d’estimation de l’âge chez des enfants de 0 à 12 ans. Il trouverait
une place encore plus adaptée au sein d’un logiciel de gestion de données Patient. Au besoin,
le médecin ferait alors juste appel à notre module qui se chargerait d’estimer rapidement l’âge
de l’enfant dont la radiographie préenrégistrée vient d’être chargée en mémoire. Le
programme pourrait aussi être greffé sur un dispositif de prise d’image adapté.
On pourrait penser à un dispositif radiographique qui prendrait les images au format nécessité
par le programme. Dans notre cas, nous avons manuellement créé le format d’image qui nous
convenait. Cette tâche serait à priori aussi automatisable, mais il nous semble que ceci
nécessitera des procédures encore plus complexes que ceux mises en œuvre dans notre
programme.
Conclusion
Enfin, sur le plan culturel et humain, cette expérience a été très enrichissante. Outre la
découverte d’un pays et d’une culture, l’occasion s’est aussi présenté d’évaluer les besoins
en informatisation des pays de sud et de réfléchir sur les possibilités de création
d’entreprises informatiques dans les pays en voie de développement.
Annexes
ANNEXE1
G.SetBuffering(TRUE);
OUT_MENU(G);
iGris=AllocT(iGris,ImgTmp.GetHeight(),ImgTmp.GetWidth());
F.DrawImage(ImgTmp,0,0);
F.UpdateBuffer();
for(int i=0;i<255;i++)
Histogramme[i]=0;
//acquisition de l'image
t=clock();
for(i=0;i<ImgTmp.GetHeight();i++) //on scan l'image
pixel par pixel =>on remplit le tab RVB
for(int j=0;j<ImgTmp.GetWidth();j++)
{
F.GetColor(j,i,tmp1,tmp2,tmp3);
iGris[i][j]=(tmp1*255+tmp2*255+tmp3*255)/3;
Histogramme[int((tmp1*255+tmp2*255+tmp3*255)/3)]+=1;
}
DesAllocT(iGris,ImgTmp.GetHeight());
//*****************************************************************
*********************
//on cree un marqueur dont tous les pixel sont a zero sauf les
pixels du bord
ImageBinaire *Marqueur=new
ImageBinaire(ImgTmp.GetHeight(),ImgTmp.GetWidth(),1);
t=clock();
ImageBinaire *tmp,*tmp22,*tmp33,*ImageFinal;
int cpt=0,X,Y,NbPixel,nb=1;
vector<POINT>Pt;
Pt.resize(0);
POINT Pt_Tmp;
*ImgBin=*tmp22;
NbPixel=ImgBin->Aire();
DrawImg(F,*ImgBin);
tmp=new ImageBinaire(*ImgBin);
*ImgBin=*tmp;
cpt=0;
Pt.resize(0);
while(tmp->Isolation(&X,&Y)) //on va isoler les objets
sortants en les localisants
{
Pt_Tmp.x=X;
Pt_Tmp.y=Y;
Pt.push_back(Pt_Tmp);
cpt++;
*ImgBin-=*tmp; //on supprime
le coin que l'on a compté
*tmp=*ImgBin;
}