我是JESS编程的新手,我想制作一个诊断桌面应用程序。我按照 Jess in action 一书中的 tax.clp 进行了操作。我将jess in action的书中的所有功能都改编成了我的程序。但我的(defmodule面试)有问题。当我第一次运行该模块时它工作正常,然后我添加了模块推荐(defmodule推荐),当再次运行时,我有 Jess在例行调用中报告错误。
这是我的.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.