CHAPITRE VI:
IMPLEMENTATION DU SYSTEME EXPERT EN CLIPS
Le point de chute d'un travail informatique est la
réalisation d'une application qui consistera au développement
d'un logiciel pouvant assurer un bon service à l'utilisateur.
VI.1. PRESENTATION DE
LOGICIEL
Pour cette application, nous utiliserons le langage de
programmation CLIPS qui est un type de langage de programmation conçu
pour implémenter des systèmes experts. Un système expert
est un programme spécialement conçu pour modéliser une
expertise ou une Connaissance humaine.
Nous avons porte notre choix sur ce langage de programmation,
parce qu'il est un outil pour le système expert il est aussi un
environnement complet pour développer des systèmes experts,
incluant des caractéristiques telles qu'un éditeur
intégré et un outil de débogage.
VI.2. LE CODE SOURCE
(defrule presentation
(initial-fact)
=>
(printout t
"*******************************************************************************************"crlf
"* SYSTEME EXPERT POUR LE DIAGNOSTIC ET LA THERAPEUTIQUE DES
MALADIES DE LA TUBERCULOSE
*"crlf
"*******************************************************************************************"crlf
"*Auteur: schadrac KANDE
*"crlf
"*Promotion: L2 Informatique
*"crlf
"*version: clips 6.30 beta
*"crlf
"*Année Academique: 2009-2010
*"crlf
"*******************************************************************************************"crlf
crlf crlf crlf "Tapez la touche ENTREE pour continuer ...
"
crlf
)
(bind ?touche (readline))
(assert (fait debut))
)
(defrule regle1
(fait debut)
=>
(printout t "voici la liste des symptomes:"
crlf crlf
"A. Adénopathies cervicales" crlf
"B. Amaigrissement" crlf
"C. Anorexie" crlf
"D. Asthénie" crlf
"E. Fiévre peu
élevée" crlf
"F. Température"
crlf
"G. Transpiration" crlf
"H. Toux avec ou sans
expectoration dépuis plus de 15 jours, parfois avec hémoptysies"
crlf crlf crlf
" Introduire des symptomes
constatés(au plus 10 codes des symptomes tel qu'indiqué
ci-haut):" crlf crlf
)
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
)
(defrule regle2
(fait "A")
(fait "B")
(fait "C")
(fait "D")
(fait "E")
(fait "F")
(fait "G")
(fait "H")
=>
(printout t crlf crlf crlf crlf "VOUS SOUFFREZ DE LA
TUBERCULOSE" crlf crlf crlf
)
(printout t "Le traitement se donne selon les
différentes catégories des malades" crlf crlf
"voici la liste de classement en catégorie:" crlf
crlf
"I. Malades tuberculeux gravement atteints avec une infection
concomitante par le VIH." crlf crlf
"J. Nouveaux cas de TP à frottis négatif avec
une atteinte importante du parenchyme." crlf crlf
"K. Nouveaux cas de TP à frottis positif." crlf crlf
"L. Nouveaux cas de tuberculose extra-pulmonaire." crlf
crlf
"M. Nouveaux cas de tuberculose jamais traités." crlf
crlf
"N. Nouveaux cas de tuberculose pulmonaire à microscopie
négative avec lésions peu étendues et autres cas
bénins de TEP et séronégatifs au VIH." crlf crlf
"O. Malades tuberculeux gravement atteints avec infection
concomitante par le VIH." crlf crlf
"P. Réchutes." crlf crlf
"Q. Traitément après échec
thérapeutique." crlf crlf
"R. Traitément après interruption." crlf crlf
crlf crlf
" Introduire le classement constatés (au plus 6 codes
tel qu'indiqué ci-haut):" crlf crlf
)
(reset)
(assert (fait catégorie))
)
(defrule regle3
(fait catégorie)
=>
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
)
(defrule regle4
(fait "I")
(fait "J")
(fait "K")
(fait "L")
(fait "M")
(fait "O")
=>
(printout t crlf crlf crlf crlf "VOUS ETES CLASSES DANS LA
CATEGORIE I" crlf crlf crlf crlf crlf crlf)
(printout t "voici la liste de poids du patient en KG avant
le début du traitément:" crlf crlf
"S. Le poids du patient est jusqu'a 7Kg." crlf crlf
"T. Le poids du patient est de 8 à 9Kg." crlf crlf
"U. Le poids du patient est de 10 à 14Kg." crlf crlf
"V. Le poids du patient est de 15 à 19Kg." crlf crlf
"W. Le poids du patient est de 20 à 24Kg." crlf crlf
"X. Le poids du patient est de 25 à 29Kg." crlf crlf
"Y. Le poids du patient est de 30 à 39Kg." crlf crlf
"Z. Le poids du patient est de 40 à 54Kg" crlf crlf
"AA. Le poids du patient est de 55 à 70Kg." crlf
crlf
"AB. Le poids du patient est de 70 et plus de Kg." crlf crlf
" Introduire le poids constatés:" crlf crlf crlf
)
(reset)
(assert (fait catégorie))
)
(defrule regle5
(fait "P")
(fait "R")
(fait "Q")
=>
(printout t crlf crlf crlf crlf "VOUS ETES CLASSES DANS LA
CATEGORIE II" crlf crlf crlf )
(printout t "voici la liste de poids du patient en KG avant le
début du traitément:" crlf crlf
"S. Le poids du patient est jusqu'a 7Kg." crlf crlf
"T. Le poids du patient est de 8 à 9Kg." crlf crlf
"U. Le poids du patient est de 10 à 14Kg." crlf crlf
"V. Le poids du patient est de 15 à 19Kg." crlf crlf
"W. Le poids du patient est de 20 à 24Kg." crlf crlf
"X. Le poids du patient est de 25 à 29Kg." crlf crlf
"Y. Le poids du patient est de 30 à 39Kg." crlf crlf
"Z. Le poids du patient est de 40 à 54Kg" crlf crlf
"AA. Le poids du patient est de 55 à 70Kg." crlf
crlf
"AB. Le poids du patient est de 70 et plus de Kg." crlf crlf
" Introduire le poids constatés:" crlf crlf crlf
)
(reset)
(assert (fait catégorie))
)
(defrule regle6
(fait "N")
=>
(printout t crlf crlf crlf crlf "VOUS ETES CLASSES DANS LA
CATEGORIE III" crlf crlf crlf crlf crlf crlf)
(printout t "voici la liste de poids du patient en KG avant
le début du traitément:" crlf crlf
"S. Le poids du patient est jusqu'a 7Kg." crlf crlf
"T. Le poids du patient est de 8 à 9Kg." crlf crlf
"U. Le poids du patient est de 10 à 14Kg." crlf crlf
"V. Le poids du patient est de 15 à 19Kg." crlf crlf
"W. Le poids du patient est de 20 à 24Kg." crlf crlf
"X. Le poids du patient est de 25 à 29Kg." crlf crlf
"Y. Le poids du patient est de 30 à 39Kg." crlf crlf
"Z. Le poids du patient est de 40 à 54Kg" crlf crlf
"AA. Le poids du patient est de 55 à 70Kg." crlf
crlf
"AB. Le poids du patient est de 70 et plus de Kg." crlf crlf
" Introduire le poids constatés:" crlf crlf crlf crlf
)
(reset)
(assert (fait catégorie))
)
(defrule regle7
(fait catégorie)
=>
(printout t "voici la liste de poids du patient en KG avant
le début du traitément:" crlf crlf
"S. Le poids du patient est jusqu'a 7Kg." crlf crlf
"T. Le poids du patient est de 8 à 9Kg." crlf crlf
"U. Le poids du patient est de 10 à 14Kg." crlf crlf
"V. Le poids du patient est de 15 à 19Kg." crlf crlf
"W. Le poids du patient est de 20 à 24Kg." crlf crlf
"X. Le poids du patient est de 25 à 29Kg." crlf crlf
"Y. Le poids du patient est de 30 à 39Kg." crlf crlf
"Z. Le poids du patient est de 40 à 54Kg" crlf crlf
"AA. Le poids du patient est de 55 à 70Kg." crlf
crlf
"AB. Le poids du patient est de 70 et plus de Kg." crlf crlf
" Introduire le poids constatés:" crlf crlf crlf crlf
)
(printout t "tapez une lettre : ")
(bind ?reponse (readline))
(assert (fait ?reponse))
)
(defrule regle8
(fait "S")
=>
(printout t "Le poids du patient est jusqu'a 7Kg." crlf
crlf
"Traitement,posologies pour enfant:(Les médicaments
antituberculeux essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux:Isoniaside(H), Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S), Ethambutol(E)).
- RHZ:1comprimé chaque jour pendant 2mois dans la
1ère phase.
- Ethambutol:0,25comprimés chaque jour pendant 2mois
dans la 1ère phase.
- RH:1comprimé chaque jour pendant 4mois dans la
2ème phase. " crlf crlf )
(reset)
(assert (fait traitément))
)
(defrule regle9
(fait "T")
=>
(printout t "Le poids du patient est de 8 à 9Kg." crlf
crlf
"Traitement,posologies pour enfant:(Les médicaments
antituberculeux essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun
d'eux:Isoniaside(H),Rifampicine(R),Pyrazinamide(Z),
Streptomycine(S),Ethambutol(E)).
- RHZ:1,5comprimés chaque jour pendant
2mois dans la 1ère phase.
- Ethambutol:0,5comprimé chaque jour
pendant 2mois dans la 1ère phase.
- RH:1,5comprimés chaque jour pendant
4mois dans la 2ème phase." crlf )
(reset)
(assert (fait traitément))
)
(defrule regle10
(fait "U")
=>
(printout t "Le poids du patient est de 10 à 14Kg."
crlf crlf
"Traitement,posologies pour enfant:(Les
médicaments antituberculeux essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux:Isoniaside(H), Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S), Ethambutol(E)).
- RHZ:2comprimés chaque jour pendant
2mois dans la 1ère phase.
- Ethambutol:0,5comprimé chaque jour
pendant 2mois dans la 1ère phase.
- RH:2comprimés chaque jour pendant 4mois
dans la 2ème phase." crlf crlf)
(reset)
(assert (fait traitément))
)
(defrule regle11
(fait "V")
=>
(printout t "Le poids du patient est de 15 à 19Kg."
crlf crlf
"Traitement: (Les médicaments antituberculeux
essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux: Isoniaside(H), Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S), Ethambutol(E)).
- RHZ:3comprimés chaque jour pendant 2mois
dans la 1ère phase.
- Ethambutol:0,75comprimés chaque jour pendant
2mois dans la 1ère phase.
- RH:3comprimés chaque jour pendant 4 mois dans
la 2ème phase." crlf crlf)
(reset)
(assert (fait traitément))
)
(defrule regle12
(fait "W")
=>
(printout t "Le poids du patient est de 20 à 24Kg."
crlf crlf
"Traitement:(Les médicaments antituberculeux
essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux:I soniaside(H), Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S), Ethambutol(E)).
- RHZ:4comprimés chaque jour pendant 2mois dans
la 1ère phase.
- Ethambutol:1comprimé chaque jour pendant 2mois
dans la 1ère phase.
- RH:4comprimés chaque jour pendant 4mois dans la
2ème phase." crlf crlf)
(reset)
(assert (fait traitément))
)
(defrule regle13
(fait "X")
=>
(printout t "Le poids du patient est de 25 à 29Kg."
crlf crlf
"Traitement:(Les médicaments antituberculeux
essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux: Isoniaside(H) ,Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S), Ethambutol(E)).
- RHZ:5comprimés chaque jour pendant 2mois dans
la 1ère phase.
- Ethambutol:1,5comprimés chaque jour pendant
2mois dans la 1ère phase.
- RH:5comprimés chaque jour pendant 4mois dans
la 2ème phase." crlf crlf)
(reset)
(assert (fait traitément))
)
(defrule regle14
(fait "Y")
=>
(printout t "Le poids du patient est de 30 à 39Kg."
crlf crlf
"Traitement pour les catégories I et III: (Les
médicaments antituberculeux essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux: Isoniaside(H), Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S), Ethambutol(E)).
- RHZE:2comprimés chaque jour pendant 2mois dans
la 1ère phase.
- RH:2comprimés chaque jour pendant 4mois dans la
2ème phase.
catégorie II:
- RHZE: 2comprimés chaque jour pendant 3mois
dans la 1ère phase.
- Streptomycine:0,5g/jour chaque jour pendant 2mois dans
la 1ère phase.
- RHE:2comprimés chaque jour pendant 5mois dans
la 2ème phase." crlf crlf)
(reset)
(assert (fait traitément))
)
(defrule regle15
(fait "Z")
=>
(printout t "Le poids du patient est de 40 à 54Kg."
crlf crlf
"Traitement pour les catégories I et III:(Les
médicaments antituberculeux
essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux:I soniaside(H), Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S), Ethambutol(E)).
- RHZE:3comprimés chaque jour pendant 2mois
dans la 1ère phase.
- RH:3comprimés chaque jour pendant 4mois
dans la 2ème phase.
catégorie II:
- RHZE:3comprimés chaque jour pendant 3mois
dans la 1ère phase.
- Streptomycine:0,75g/jour chaque jour pendant 2mois
dans la 1ère phase.
- RHE:3comprimés chaque jour pendant 5mois dans
la 2ème phase." crlf crlf)
(reset)
(assert (fait traitément))
)
(defrule regle16
(fait "AA")
=>
(printout t "Le poids du patient est de 55 à 70Kg."
crlf crlf
"Traitement pourles catégories I et III:(Les
médicaments antituberculeux essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux: Isoniaside(H), Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S),Ethambutol(E)).
- RHZE:4comprimés chaque jour pendant 2mois dans
la 1ère phase.
- RH:4comprimés chaque jour pendant 4mois dans la
2ème phase.
catégorie II:
- RHZE: 4comprimés chaque jour pendant 3mois dans
la 1ère phase.
- Streptomycine:1g chaque jour pendant 2mois dans la
1ère phase.
- RHE:4comprimés chaque jour pendant 5mois dans
la 2ème phase." crlf crlf)
(reset)
(assert (fait traitément))
)
(defrule regle17
(fait "AB")
=>
(printout t "Le poids du patient est de 70 et plus de Kg."
crlf crlf
"Traitement pour les catégories I et III:(Les
médicaments antituberculeux essentiel sont au nombre de 5.
un code sous forme d'une lettre a été
attribué à chacun d'eux: Isoniaside(H), Rifampicine(R),
Pyrazinamide(Z), Streptomycine(S),Ethambutol(E)).
- RHZE:5comprimés chaque jour pendant 2mois
dans la 1ère phase.
-RH:5comprimés chaque jour pendant 4mois dans
la 2ème phase.
catégorie II:
- RHZE:5comprimés chaque jour pendant 3mois
dans la 1ère phase.
- Streptomycine:1g chaque jour pendant 2mois dans la
1ère phase.
- RHE:5comprimés chaque jour pendant 5mois
dans la 2ème phase.")
(reset)
(assert (fait traitément))
)
|