Джесс сообщила об ошибке в обычном вызове - PullRequest
0 голосов
/ 09 мая 2018

Я новичок в программировании JESS и хочу создать приложение для диагностики на рабочем столе. я последовал за tax.clp из книги Джесс в действии . я адаптировал все функции книги «Джесс в действии» к своей программе. но у меня проблема с моим (интервью с демодулированием) . когда я впервые запускаю этот модуль, он работает хорошо, затем я добавил модуль, рекомендующий (рекомендация по де-модулю) , при повторном запуске у меня Джесс сообщил об ошибке в обычном вызове .

Это мой .clp файл

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; définition des differents templates
(deftemplate questions
    (slot ident)
    (slot type)
    (slot texte))

(deftemplate reponses
    (slot texte)
    (slot ident))

(deftemplate diagnostique
    (slot maladie)
    (slot explication)
    (slot traitement) )

;;vérifier si la reponse est bien oui ou non
 (deffunction is-of-type (?answer ?type)
 "Check that the answer has the right form"
 (if (eq ?type yes-no) then
 (return (or (eq ?answer yes) (eq ?answer no)))
 else (if (eq ?type number) then
 (return (numberp ?answer))))
    else return(>(str-length ?answer) 0))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;poser une question et retourner une reponse
(deffunction ask-patient (?question ?type)
 "Ask a question, and return the answer"
 (bind ?answer "")
 (while (not (is-of-type ?answer ?type)) do
 (printout t ?question " ")
 (if (eq ?type yes-no) then
 (printout t "(yes or no) "))
 (bind ?answer (read)))
 (return ?answer))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; module de questionaire par l'identifiant de la question
(defmodule ask)
(defrule ask::ask-question-by-id
 "Ask a question and assert the answer"
 (declare (auto-focus TRUE))
 ;; If there is a question with ident ?id...
 (MAIN::questions (ident ?id) (texte ?text) (type ?type))
 ;; ... and there is no answer for it
 (not (MAIN::reponses (ident ?id)))
 ;; ... and the trigger fact for this question exists
 ?ask <- (MAIN::ask ?id)
 =>
 ;; Ask the question
 (bind ?answer (ask-patient ?text ?type))
 ;; Assert the answer as a fact
 (assert (MAIN::reponses (ident ?id) (texte ?answer)))
 ;; Remove the trigger
 (retract ?ask)
 ;; And finally, exit this module
 (return))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;module de départ
(defmodule startup)
(defrule startup::print-banner
 =>
 (printout t "Type your name and press Enter> ")
 (bind ?name (read))
 (bind ?prenom (read))
 (bind ?)
 (printout t crlf "*****************************" crlf)
 (printout t "Salut, " ?name " " ?prenom "." crlf)
 (printout t "bienvenue sur l'application expert en pneumonie du departement P1 du CHU Ibn Sina" crlf)
 (printout t "S'il vous plait veuillez repondre aux differentes questions" crlf)
 (printout t " apres quoi vous aurez votre diagnostique" crlf)
 (printout t "vous souffrer de." crlf)
 (printout t "*****************************" crlf crlf))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(deffacts MAIN::question-data

 "questions posée par le systeme"
 (questions (ident poids) (type number)(texte "quel poids a-t-il?"))
 (questions (ident age) (type number)(texte "quelle age a l'enfant?"))
 (questions (ident symptome_majeur_1) (type yes-no)(texte "presente t-il des dyspnées sifflantes?"))
 (questions (ident symptome_majeur_2) (type yes-no)(texte "presente t-il une toux chronique?"))
 (questions (ident dypnée_brute) (type yes-no)(texte "la dyspnée est-elle brusque?"))
 (questions (ident rale_sibilant) (type "yes-no")(texte "a-t-il des rales sibilants?"))
 (questions (ident syndrome_penetration) (type yes-no)(texte "y a t-il eu syndrome de pénétration?"))
 (questions (ident rales_sibilant_uni) (type yes-no)(texte "a t-il/elle des rales sibilants unilatéraux?")) 
 (questions (ident Rx_diff_clarte) (type yes-no)(texte "la radio du thorax presente t-elle une difference de clarté des deux champs pulmonaires?"))
 (questions (ident Bronchioscopie) (type yes-no)(texte "la Bronchioscopie montre t-elle un corps étrangé?"))
 (questions (ident o2_naissance) (type yes-no)(texte "a t-il/elle eu besoin de O2 à la naissance??"))
 (questions (ident rales_sibilant_bi) (type yes-no)(texte "a t-il/elle des rales sibilants bilatéraux?"))
 (questions (ident Rx_flou_multi_zone) (type yes-no)(texte "la radio du thorax presente t-elle des images floues multiples avec des zones hyperclaires?"))
 (questions (ident TDM_thoracique_zone) (type yes-no)(texte "la radio du thorax presente t-elle des Zones hyper claires,  multifocales, opacités linéaires et sous- pleurales?"))
 (questions (ident vomissement) (type yes-no)(texte "l'enfant/nourisson a-t-il/elle des vomissement chroniques?"))
 (questions (ident rales_ronflants) (type yes-no)(texte "presente -t-il/elle des rales ronflants?"))
 (questions (ident Rx_foyer_pneumo_inhalation) (type yes-no)(texte "la Radio du thorax presente-t-elle des foyers de pneumopathies d'inhalaton?"))
 (questions (ident PM_metrique) (type yes-no)(texte "son PM métrique est-il positif?"))
 (questions (ident diarrhée_chronique) (type yes-no)(texte "fait-il/elle des diarrhées chroniques?"))
 (questions (ident Rx_foyer_pneumopathie) (type yes-no)(texte "la Radio du thorax presente t-elle des foyers de pneumopathie?"))
 (questions (ident test_sueur) (type yes-no)(texte "le test à la sueur est-il supérieur à 60mEq/l?"))
 (questions (ident contage_tuberculeux) (type yes-no)(texte "a-t-il/elle été en contact avec un tuberculeux?"))
 (questions (ident fievre) (type yes-no)(texte "a-t-il/elle de la fièvre?"))
 (questions (ident amaigrissement) (type yes-no)(texte "a-t-il/elle maigris?"))
 (questions (ident Rx_deviation_trachee) (type yes-no)(texte "la radio du thorax montre t-elle une déviation de la trachée?"))
 (questions (ident caverne_tuberculeuse) (type yes-no)(texte "a-t-il/elle des caverne tuberculeuses?"))
 (questions (ident IDR) (type yes-no)(texte "a-t-il/elle une IDR >15mm?"))
 (questions (ident BK) (type yes-no)(texte "la recherche du bacille de kok dans les crachats est-elle positive?"))
 (questions (ident gene_expert) (type yes-no)(texte "la recherche du gene expert est-elle positive?"))
 (questions (ident pneumo_repetitive) (type yes-no)(texte "a-t-il/elle déja eu des pneumopathies répétitives?"))
 (questions (ident retard_ponderal) (type yes-no)(texte "a-t-il/elle un retard structuropondéral"))
 (questions (ident Rx_thymus) (type yes-no)(texte "la radio du thorax presente t-elle une absence de thymus?"))
 (questions (ident NFS) (type yes-no)(texte "a-t-il/elle une NFS Lymphopénie, Hyperésinophilie?"))
 (questions (ident VIH_test) (type yes-no)(texte "le test du VIH est-il positif?"))
 (questions (ident Hyperésinophilie) (type yes-no)(texte "le patient a-t-il une Hyperésinophilie?"))
 (questions (ident dosage_ig) (type yes-no)(texte "le Dosage pondéral des Ig est-il dimunié ?"))
 (questions (ident sous-typage) (type yes-no)(texte "le Sous typage lymphocytaire a-t-il diminué?"))
 (questions (ident episode_infection_viral_severe) (type yes-no)(texte "a-t-il/elle eu Épisode d’infection virale sévère au paravant?"))
 (questions (ident interval_intercritique) (type yes-no)(texte "a-t-il/elle eu des Intervalle intercritique symptomatique?"))
 (questions (ident Rx_trouble_ventilation) (type yes-no)(texte "la radio presente t-elle des trouble de ventricule?"))
 (questions (ident TDM_thorax_verre_depoli) (type yes-no)(texte "la radio du thorax presente t-elle des aspect verre dépoli?"))
 (questions (ident cyanose) (type yes-no)(texte "presente t-il/elle des cyanoses?"))
 (questions (ident fatigabilite) (type yes-no)(texte "est-il/elle fatigué à l’effort ou lors des tétés?"))
 (questions (ident echocoeur) (type yes-no)(texte "l'échocoeur est -elle positive?"))
 (questions (ident souffle_cardiaque) (type yes-no)(texte "a-t-il/elle des souffles cardiaques)?"))
 (questions (ident atopie_perso) (type yes-no)(texte "presente t-il/elle des atopies personneles?"))
 (questions (ident atopie_famille) (type yes-no)(texte "presente t-il/elle des atopies familiale?"))
 (questions (ident toux-noctune) (type yes-no)(texte "presente t-il/elle des atopies familiale?"))
 (questions (ident Rx_distansion_thoracique) (type yes-no)(texte "la radio presente-t-elle des distension thoraciques?"))
 (questions (ident rale_sibilant_bi_symetrique) (type yes-no)(texte "les rales sibilantes sont-elles symetriques?"))
 (questions (ident EFR) (type yes-no)(texte "la EFR montre t-elle un syndrome d'obstruction?")))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;-------------------------------------module d'interview-----------------------

(defmodule interview)  

(defrule questions_basique_1
 =>
 (assert (ask age)))

(defrule questions_basique_2
 =>
 (assert (ask poids)))

(defrule questions_basique_3
 =>
 (assert (ask symptome_majeur_1))) 

(defrule questions_basique_4
 =>
 (assert (ask symptome_majeur_1)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;----------------------------corps étrangé---------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;questions pour le corps etrangé
(defrule request-dyspné_oui
 ;; si le patient a une dyspnée
 (reponses (ident symptome_majeur_1) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;lui posée la question si elle est brute
 (assert (ask dypnée_brute)))

 (defrule request-dyspné_brute_oui
 ;; si le patient a une dyspnée brute
 (reponses (ident dypnée_brute) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;poser la question sur syndrome de penetration
 (assert (ask syndrome_penetration)))

(defrule request-syndrome_penetration_oui
 ;; si le patient a eu syndrome de pénétration
 (reponses (ident syndrome_penetration) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;poser la quetion sur des rales sibilants unilatérauxé
 (assert (ask rales_sibilant_uni)))

(defrule request-rales_sibilant_uni_oui
 ;; s'il a des rales sibilants unilatéreaux
 (reponses (ident rales_sibilant_uni) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;faire une radio du thorax pour définir s'il ya difference de clarté
 (assert (ask Rx_diff_clarte)))

(defrule request-Rx_diff_clarte_oui
 ;; s'il a des differences de clarté
 (reponses (ident Rx_diff_clarte) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;faire une bronchoscopie
 (assert (ask Bronchioscopie)))

  ;; fin du questionnaires corps etrnagé
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;---------------------------------broncodysplasie------------------------------
  ;;debut de questionnaire pour la broncodysplasie
(defrule request-dyspné_brute_non
 ;; si la dyspnée n'est pas brutal
 (reponses (ident dypnée_brute) (texte ?i&:(eq (str-compare ?i no)0)))
 =>
 ;;demander s'il eu des prolemes d'oxygene à la naissance
 (assert (ask o2_naissance)))

(defrule request-o2_naissance
 ;; s'il a eu besoin d'oxygene à la naissance
 (reponses (ident o2_naissance) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il des rales sibilants bilatéraux
 (assert (ask rales_sibilant_bi)))

(defrule request_rales_sibilant_bi_oui
 ;; s'il a des rales sibilantes bilatéraux
 (reponses (ident rales_sibilant_bi) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;faire une Rx pour voir s'il ya plusieurs images floues et des zones hyperclaires
 (assert (ask Rx_flou_multi_zone)))

(defrule request_Rx_flou_multi_zone_oui
 ;; s'il a des Rx flou
 (reponses (ident Rx_flou_multi_zone) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;faire une Rx pour voir s'il ya plusieurs images floues et des zones hyperclaires
 (assert (ask TDM_thoracique_zone)))
 ;;fin de questionnaires sur la bronchodysplasie
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;-----------------------------------------------RGO----------------------------
  ;;début de questionnaire sur les RGO
(defrule request-dyspné_brute_non_2
  ;; si la dyspnée n'est pas brutal
 (reponses (ident dypnée_brute) (texte ?i&:(eq (str-compare ?i no)0)))
 =>
  ;;demander s'il des vomissement, rales ronflants,sibiant bi
 (assert (ask vomissement))
 (assert (ask rales_ronflants))
 (assert (ask rales_sibilant_bi)))

(defrule request_vomi_ronflant_sibilan_bi_oui
  ;; si des vomissement, rales ronflants,sibiant bi sont ok
 (reponses (ident vomissement) (texte ?i&:(eq ?i yes)))
 (reponses (ident rales_ronflants) (texte ?i&:(eq ?i yes)))
 (reponses (ident rales_sibilant_bi) (texte ?i&:(eq ?i yes)))
 =>
  ;;poser la question sur le PM metrique
 (assert (ask Rx_foyer_pneumo_inhalation)))

(defrule request_Rx_foyer_pneumo_inhalation_oui
 ;; s'il a des foyer de pneumopathie d'inhalation à la Rx
 (reponses (ident Rx_foyer_pneumo_inhalation) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;vérifier le pm metrique
 (assert (ask PM_metrique)))
;; fin de questionnaire sur la RGO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;------------------------------------mucovisidose------------------------------
  ;;début de questionnaires sur la mucovisidose
(defrule request-dyspné_brute_non_3
 ;; si la dyspnée n'est pas brutal
 (reponses (ident dypnée_brute) (texte ?i&:(eq (str-compare ?i no)0)))
 =>
 ;;demander s'il eu des diarrhées chroniques
 (assert (ask diarrhée_chronique)))

(defrule request-diarrhée_chronique_oui
 ;; s'il a des diarrhées chroniques
 (reponses (ident diarrhée_chronique) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il eu des rales sibilant  et ronflants
 (assert (ask rales_sibilant_bi))
 (assert (ask rales_ronflants)))

(defrule request-rale_ronflant_sibilant_oui
 ;;  si des rales sibilant  et ronflants oui
 (reponses (ident rales_sibilant_bi) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident rales_ronflants) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il eu des foyer pneumatique à la radio
 (assert (ask Rx_foyer_pneumopathie)))

(defrule request-Rx_foyer_pneumopathie_oui
  ;;  si la Rx montre des foyeus de pneumopathie
 (reponses (ident Rx_foyer_pneumopathie) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
  ;;demander s'il eu des prolemes d'oxygene à la naissance
 (assert (ask test_sueur)))
  ;;fin de questionnaire sur la mucoviscidose
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;-------------------------------------------tuberculose pulmonaire-------------
  ;;debut de questionnaires sur tuberculose pulmonaire
(defrule request-dyspné_brute_non_4
  ;; si la dyspnée n'est pas brutal
 (reponses (ident dypnée_brute) (texte ?i&:(eq (str-compare ?i no)0)))
 =>
  ;;demander s'il eu un contact avec un tuberculeux
 (assert (ask contage_tuberculeux)))

(defrule request-contage_tuberculeux_oui
  ;;s'il a été en contact avec un tuberculeux   
 (reponses (ident contage_tuberculeux) (texte ?i&:(eq (str-compare ?i yes)0))) 
    =>  
 ;;demander s'il eu des fievre, rale bi, amaigrissement, rx deviation trachee, caverne tuberculeux
 (assert (ask fievre))
 (assert (ask rales_sibilant_bi))
 (assert (ask amaigrissement))
 (assert (ask Rx_deviation_trachee))
 (assert (ask caverne_tuberculeuse)))

(defrule request-fievre_ral_bi_amai_de_tra_tuber_oui
 ;;  si les questions sont ok
 (reponses (ident fievre) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident rales_sibilant_bi) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident amaigrissement) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident Rx_deviation_trachee) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident caverne_tuberculeuse) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il eu des prolemes d'oxygene à la naissance
 (assert (ask IDR))
 (assert (ask BK))
 (assert (ask gene_expert)))
  ;;fin de questionnaire tuberculose pulmonaire
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;-------------------------------------------------------déficite immunitaire --
  ;;début de déficite immunitaire 
(defrule request-dyspné_brute_non_5
 ;; si la dyspnée n'est pas brutal
 (reponses (ident dypnée_brute) (texte ?i&:(eq (str-compare ?i no)0)))
 =>
 ;;demander s'il eu des pneumopathie à répétitions
 (assert (ask pneumo_repetitive)))

(defrule request-pneumo_repetitive
 ;; s'il n'a pas de pneumopathie à répétition
 (reponses (ident pneumo_repetitive) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il eu des rale, et des ratard ponderaux
 (assert (ask rale_sibilant))
 (assert (ask rales_ronflants))
 (assert (ask retard_ponderal)))

(defrule request-rale_si_ronflant_retard_oui
 ;; s'il a des pneumopathie à répétition
 (reponses (ident rale_sibilant) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident rales_ronflants) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident retard_ponderal) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il eu des foyers pneumopathie et de thymus
 (assert (ask Rx_thymus))
 (assert (ask Rx_foyer_pneumopathie)))

(defrule request-thymus_foyer_pneumo_oui
 ;; s'il a des pneumopathie à répétition
 (reponses (ident Rx_thymus) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident Rx_foyer_pneumopathie) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il eu des foyers pneumopathie et de thymus
 (assert (ask NFS))
 (assert (ask VIH_test))
 (assert (ask dosage_ig))
 (assert (ask sous-typage))
 (assert (ask Hyperésinophilie)))
 ;;fin de questionnaire sur déficite immunitaire
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;------------------------------------------------sequelle de virose------------
  ;;debut de questionnaire de sequel de virose
(defrule request-dyspné_brute_non_6
 ;; si la dyspnée n'est pas brutal
 (reponses (ident dypnée_brute) (texte ?i&:(eq ?i no)))
 =>
 ;;demander s'il eu des infections virale séveres et des intervales tritiques symptomatique
 (assert (ask episode_infection_viral_severe))
 (assert (ask interval_intercritique)))

(defrule request-episode_viral_interval_oui
   ;; si les apisode virale severes ont eu leux et des intervalles critiques symptomatiques
 (reponses (ident episode_infection_viral_severe) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident interval_intercritique) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
   ;;chercher sur la Rx s'il a des trouble de ventilation
 (assert (ask Rx_trouble_ventilation)))

(defrule request-Rx_trouble_ventilation_oui
 ;; si la Rx ne presente pas de trouble ventilatoires
 (reponses (ident Rx_trouble_ventilation) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;chercher sur la Rx s'il a des trouble de ventilation
 (assert (ask TDM_thorax_verre_depoli)))
  ;;fin questionnaires de sequelle de virose
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;-----------------------------------------------cardiaopathie congénitale------
  ;;debut questionnaire cardiaopathie congénitale
(defrule request-dyspné_brute_non_7
 ;; si la dyspnée n'est pas brutal
 (reponses (ident dypnée_brute) (texte ?i&:(eq (str-compare ?i no)0)))
 =>
 ;;demander s'il eu des cyanoses et des fatigabilités lors des tétés
 (assert (ask cyanose))
 (assert (ask fatigabilite)))

(defrule request-cyanose_fatigue_oui
 ;; s'il eu des cyanoses et des fatigabilités lors des tétés
 (reponses (ident cyanose) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident fatigabilite) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il a des souffles cardiaques
 (assert (ask souffle_cardiaque)))

(defrule request-souffle_cardiaque_oui
 ;; s'il eu des souffles cardiaques
 (reponses (ident souffle_cardiaque) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il a des souffles cardiaques
 (assert (ask echocoeur)))
;;fin de questionnaires de cardiapathie congénitale
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;--------------------------------------------asthme----------------------------
  ;;début questionnaire asthme
(defrule request-dyspné_brute_non_8
 ;; si la dyspnée n'est pas brutal
 (reponses (ident dypnée_brute) (texte ?i&:(eq (str-compare ?i no)0)))
 =>
 ;;demander s'il des atopies familiales ou personnelles et des toux nocturne
 (assert (ask atopie_perso))
 (assert (ask atopie_famille))
 (assert (ask toux-noctune)))

(defrule request-atopies_toux_oui
 ;; s'-l/elle a des atopies familiales ou personneles avec des toux noctunes
 (reponses (ident atopie_perso) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident atopie_famille) (texte ?i&:(eq (str-compare ?i yes)0)))
 (reponses (ident toux-noctune) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;demander s'il des rale sibilants bilatéraux
 (assert (ask rale_sibilant_bi_symetrique)))

(defrule request-rale_sibilant_bi_symetrique_oui
 ;; s'-l/elle a des atopies familiales ou personneles avec des toux noctunes
 (reponses (ident rale_sibilant_bi_symetrique) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;voir s'il a des distensions thoracique dans le Rx
 (assert (ask Rx_distansion_thoracique)))

(defrule request-Rx_distansion_thoracique_oui
 ;; s'-l/elle a des atopies familiales ou personneles avec des toux noctunes
 (reponses (ident Rx_distansion_thoracique) (texte ?i&:(eq (str-compare ?i yes)0)))
 =>
 ;;voir s'il a des distensions thoracique dans le Rx
 (assert (ask EFR)))
;; fin de l'interview

вот ошибка, когда я запускаю интервью модуля

Jess> (focus interview)
 <== Focus MAIN
 ==> Focus interview
MAIN
Jess> (run)
FIRE 1 interview::questions_basique_2 f-0
 ==> f-55 (MAIN::ask poids)
==> Activation: ask::ask-question-by-id :  f-4,, f-55
 <== Focus interview
 ==> Focus ask
FIRE 2 ask::ask-question-by-id f-4,, f-55
quel poids a-t-il? 58
 ==> f-56 (MAIN::reponses (texte 58) (ident poids))
Jess reported an error in routine call
        while executing (call ?n(0,0,-1) 2)
        while executing (> (call ?n(0,0,-1) 2))
        while executing rule LHS (TEQ)
        while executing rule LHS (TECT)
        while executing (assert (MAIN::reponses (texte ?answer) (ident ?id)))
        while executing defrule ask::ask-question-by-id
        while executing (run).
  Message: No method named '2' found in class java.lang.Integer.
  Program text: ( run )  at line 15.
...