База правил системы.

Правило для работы с меню дает возможность выбрать пункт 1, чтобы начать процесс диагностики, или — пункт 2, чтобы выйти из системы после завершения работы.

  • (defrule Menu
  • (not (iffoundChoice ?))

=>

(printout t crlf crlf crlf

" Choose one of the problem areas listed below" crlf crlf " 1. Discharge from the Eye. " crlf crlf " 2. EXIT.." crlf crlf crlf " Enter no. of your choise: " )

(assert (iffoundChoice (read))))

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

Правила R0 — R2 выводят на экран вопросы: «Страдаете ли вы от покраснения глаз?», «Страдаете ли вы от набухания век?», «Страдаете ли вы от гнойного слипания, засыхания век?» и читает ответы «Да» или «Нет», добавляя их в базу данных.

;;------------------RQ------------------

  • (defrule Discharge_from_the_Eye (iffoundChoice 1)
  • ?retractChl <- (iffoundChoice 1)
  • (not (ifYesNochoise ?))

=>

  • (retract ?retractChl)
  • (printout t crlf crlf crlf " Are you suffering from red eyes ?
  • (yes | no) " crlf crlf " Your answer: " )
  • (assert (ifYesNochoise (read)))

)

;;------------------R1------------------

  • (defrule Discharge_from_the_Eyel (ifYesNochoise yes)
  • ?retractChy <- (ifYesNochoise yes)
  • (not (ifYesNochoisel ?))

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " Are you suffering from swollen eyelids ? (Yes | No) " crlf crlf " Your answer: " )
  • (assert (ifYesNochoisel (read)))

)

;;------------------R2------------------

  • (defrule Discharge_from_the_Eye2 (ifYesNochoisel yes)
  • ?retractChy <- (ifYesNochoisel yes)
  • (not (ifYesNochoise2 ?))

=>

  • (retract ?retractChy)
  • (printout t crlf crlf crlf " Are you suffering from pus like discharge and crusting of eyelids on awakening ? (Yes I No) " crlf crlf " Your answer: " )
  • (assert (ifYesNochoise2 (read)))

)

Правило R3 формирует диагноз «Вы страдаете бактериальным конъюнктивитом или блефаритом» при наличии ответа «Да» на вопрос из R2 и выдает на экран сообщение «Благодарю вас за использование моей программы».

;;------------------R3------------------

(defrule Discharge_from_the_Eye3 (ifYesNochoise2 yes)

TretractChy <- (ifYesNochoise2 yes)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf" You are suffering from Bacterial Conjunctivitis OR blepharitis.. " crlf crlf "

Thank you for using my Program..."crlf crlf )

)

Правило R4 выводит на экран вопрос «Страдаете ли вы от липкости и засыхания век, покраснения и чесотки, потери ресниц?», составленный из трех компонентов, и читает ответ, добавляя его в базу фактов.

; .------------------R4------------------

(defrule Discharge_from_the_Eye4 (ifYesNochoise2 no)

TretractChy <- (ifYesNochoise2 no)

(not (ifYesNochoise3 T))

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf

" Are you suffering from sticky, crusty eyelids" crlf " red, itchy eyelids" crlf

" loss of eyelashes ? (Yes | No) " crlf crlf " Your answer: " )

(assert (ifYesNochoise3 (read)))

)

Правило R5 формирует диагноз «Вы страдаете от блефарита, или конъюнктивита, или ячменя» при наличии ответа «Да» на вопрос из R3 и выдает на экран сообщение «Благодарю вас за использование моей программы».

; .------------------R5------------------

  • (defrule Discharge_from_the_Eye5 (ifYesNochoise3 yes)
  • ?retractChy <- (ifYesNochoise3 yes)

=>

  • (retract YretractChy)
  • (printout t crlf crlf crlf " You are suffering from Blepharitis OR Conjunctivitis OR Stye .. " crlf crlf "

Thank you for using my Program... "crlf crlf )

)

Правило R6 выводит на экран вопрос «Страдаете ли вы от водянистых выделений, лихорадки, ангины, набухших гланд на шее?» с четырьмя компонентами и читает ответы, добавляя их в базу фактов.

..------------------R6------------------

  • (defrule Discharge_from_the_Eye6 (ifYesNochoise3 no)
  • ?retractChy <- (ifYesNochoise3 no)
  • (not (ifYesNochoise4 ?))

=>

  • (retract YretractChy)
  • (printout t crlf crlf crlf " Are you suffering from watery discharge" crlf

" fever and sore throat " crlf

" swollen glands in neck ? (Yes | No) " crlf crlf " Your answer: " )

(assert (ifYesNochoise4 (read)))

)

Правило R7 формирует диагноз «Вы страдаете вирусным конъюнктивитом или аллергическим конъюнктивитом» при ответе «Да» на вопрос из R4.

..------------------R7------------------

(defrule Discharge_from_the_Eye7 (ifYesNochoise4 yes)

YretractChy <- (ifYesNochoise4 yes)

=>

  • (retract YretractChy)
  • (printout t crlf crlf crlf " You are suffering from Viral Conjunctivitis OR allergic conjunctivitis... " crlf crif " Thank you for using my Program... "crlf crlf )

)

Правило R8 выводит на экран сообщение «Вы должны быть уверены в ваших симптомах. Попытайтесь снова» при ответе «Нет» на вопрос из R4.

;;------------------R8------------------

(defrule Discharge_from_the_Eye8 (ifYesNochoise4 no)

YretractChy <- (ifYesNochoise4 no)

=>

  • (retract YretractChy)
  • (printout t crlf crlf crlf " You should be sure in your symptoms.. Try again..."

crlf crlf " Thank you for using my Program. . . "crlf crlf )

)

Правило R9 выводит на экран вопрос «Страдаете ли вы от водянистых выделений, сезонных аллергий, зуда в глазах?» из трех компонентов при ответе «Нет» на вопрос из R1.

;;------------------R9------------------

(defrule Discharge_from_the_Eye9 (ifYesNochoisel no)

YretractChy <- (ifYesNochoisel no)

(not (ifYesNochoiseS ?))

=>

  • (retract YretractChy)
  • (printout t crlf crlf crlf

" Are you suffering from watery discharge" crlf " seasonal allergies" crlf ” itching eyes ? (Yes | No) " crlf crlf " Your answer: " )

(assert (ifYesNochoiseb (read)))

)

Правило RIO формирует диагноз «Вы страдаете от аллергического конъюнктивита или вирусного конъюнктивита» при ответе «Да» на вопрос из R5.

..------------------R10------------------

(defrule Discharge_from_the_EyelO (ifYesNochoise5 yes)

YretractChy <- (ifYesNochoise5 yes)

=>

  • (retract YretractChy)
  • (printout t crlf crlf crlf "You are suffering from Allergic

Conjunctivitis OR viral conjunctivitis ... "

crlf crlf " Thank you for using my Program... "crlf crlf )

)

Правило Rll выдает на экран вопрос «Страдаете ли вы от лихорадки и ангины, красной сыпи, начиная от лица с переходом на тело, необходимости удаления выделений из глаз?» при ответе «Нет» на вопрос из R5, ждет ответ и читает ответ на вопрос из R6, добавляя его в базу данных.

  • ------------------R11------------------
  • (defrule Discharge_from_the_Eye11 (ifYesNochoise5 no)

TretractChy <- (ifYesNochoise5 no)

(not (ifYesNochoise6 ?))

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " Are you suffering from fever and sore throat " crlf

" red rash , begins on face then body " crlf " clear discharge from eye ? (Yes | No) " crlf crlf " Your answer: " )

(assert (ifYesNochoise6 (read)))

)

Правило R12 формирует диагноз «Вы страдаете от кори или вирусного конъюнктивита» при ответе «Да» на вопрос из R6 и выводит на экран сообщение «Благодарю вас за использование моей программы».

;;------------------R12------------------

(defrule Discharge_fгom_the_Eye12 (ifYesNochoise6 yes)

TretractChy <- (ifYesNochoise6 yes)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " You are suffering from Measles OR Viral Conjunctivitis ... " crlf crlf

" Thank you for using my Program... "crlf crlf )

)

Правило R13 выдает на экран сообщение «Вы должны быть уверены в ваших симптомах. Попытайтесь снова» при ответе «Нет» на вопрос из R6.

;;------------------R13------------------

(defrule Discharge_fгom_the_Eye13 (ifYesNochoise6 no)

TretractChy <- (ifYesNochoise6 no)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " You should be sure in your symptoms.. Try again..." crlf crlf

" Thank you for using my Program... "crlf crlf )

)

Правило R14 формирует вопрос «Страдаете ли вы от опухших век, языка, лица?» при ответе «Нет» на вопрос из R0, ожидает ответ, добавляя его в базу данных.

;;------------------R14------------------

(defrule Discharge_from_the_Eyel4 ( ifYesNochoise no)

TretractChy <- (ifYesNochoise no)

  • (not (ifYesNochoise7 T))
  • (retract TretractChy)
  • (printout t crlf crlf crlf " Are you suffering from swelling of eyelids, tongue and face ? (yes | no) " crlf crlf " Your answer: " )
  • (assert (ifYesNochoise7 (read)))

)

Правило R15 формирует вопрос «Страдаете ли вы от потения, использования новых медикаментов, укусов насекомых, новой пищи, ускоренных биений сердца?» при ответе «Да» на вопрос из R7, ожидает ответ, добавляя его в базу данных вместе с ответом на вопрос из R8.

..------------------R15------------------

(defrule Discharge_from_the_Eyel5 ( ifYesNochoise7 yes)

TretractChy <- (ifYesNochoise7 yes)

(not (ifYesNochoise8 ?))

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " Are you suffering from sweating " crlf

" use of new medication, insect bite, new foods" crlf " rapid heart beat ? (yes | no) " crlf crlf " Your answer: " )

(assert (ifYesNochoise8 (read)))

)

Правило R16 формирует диагноз «Вы страдаете от аллергии или анафилаксии» при ответе «Да» на вопрос из R8 и выводит на экран сообщение «Благодарю вас за использование моей программы».

;;------------------R16------------------

(defrule Discharge_from_the_Eyel6 ( ifYesNochoise8 yes)

TretractChy <- (ifYesNochoise8 yes)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " You are suffering from Allergy OR Anaphylaxis ... " crlf crlf

" Thank you for using my Program... "crlf crlf )

)

Правило R17 формирует сообщение «Вы должны быть уверены в ваших симптомах. Попытайтесь снова» при ответе «Нет» на вопрос из R8.

..------------------R17------------------

(defrule Discharge_from_the_Eyel7 ( ifYesNochoise8 no)

TretractChy <- (ifYesNochoise8 no)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " You should be sure in your symptoms.. Try again..."

crlf crlf " Thank you for using my Program... "crlf crlf )

)

Правило R18 формирует вопрос «Страдаете ли вы от покраснений глаз с водянистыми выделениями?» при ответе «Нет» на вопрос из R7, ожидает ответ, добавляя его в базу данных вместе с ответом на вопрос из R9.

;;------------------R18------------------

  • (defrule Discharge_from_the_Eyel8 ( ifYesNochoiseV no)
  • ?retractChy <- (ifYesNochoise7 no)
  • (not (ifYesNochoise9 ?))

=>

  • (retract YretractChy)
  • (printout t crlf crlf crlf " Are you suffering from eyes red with watery discharge ? (yes | no) " crlf crlf " Your answer: " )
  • (assert (ifYesNochoise9 (read)))

)

Правило R19 формирует вопрос «Страдаете ли вы от головной боли в области глаза, как правило в течение 15—30 мин, преимущественно у мужчин, носовых выделений?» при ответе «Да» на вопрос из R9, ожидает ответ, добавляя его в базу данных вместе с ответом на вопрос из R10.

..------------------R19------------------

(defrule Discharge_fгom_the_Eye19 ( ifYesNochoise9 yes)

YretractChy <- (ifYesNochoise9 yes)

(not (ifYesNochoiselO ?))

=>

  • (retract YretractChy)
  • (printout t crlf crlf crlf " Are you suffering from headache centered around eye "crlf

" headaches usually lasting 15-30 minutes "crlf " more common in men "crlf

" nasal discharge ? (yes | no) " crlf crlf " Your answer: " )

(assert (ifYesNochoiselO (read)))

)

Правило R20 формирует диагноз «Вы страдаете от кластерной головной боли, или мигрени, или аллергического ринита» при ответе «Да» на вопрос из R10 и выводит на экран сообщение «Благодарю вас за использование моей программы».

. .------------------R20------------------

(defrule Discharge_from_the_Eye20 ( ifYesNochoiselO yes)

YretractChy <- (ifYesNochoiselO yes)

=>

  • (retract ?retractChy)
  • (printout t crlf crlf crlf " You are suffering from Cluster Headache OR Migraine Headache OR Allergic Rhinitis ... " crlf crlf " Thank you for using my Program. . . "crlf crlf ) )

Правило R21 формирует вопрос «Страдаете ли вы от гнойных выделений из глаза (наиболее распространено у пожилых людей)?» при ответе «Да» на вопрос из R10, ожидает ответ, добавляя его в базу данных вместе с ответом на вопрос из R11.

..------------------R21------------------

(defrule Discharge_from_the_Eye21 ( ifYesNochoiselO no)

TretractChy <- (ifYesNochoiselO no)

(not (ifYesNochoisell ?))

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " Are you suffering from more common in elderly people "crlf

" may develop pus like drainage from eye ? (yes | no) " crlf crlf

" Your answer: " )

(assert (ifYesNochoisell (read)))

)

Правило R22 формирует диагноз «Вы страдаете от дакроцистита, или ячменя, или конъюнктивита» при ответе «Да» на вопрос из Rl 1 и выводит на экран сообщение «Благодарю вас за использование моей программы».

..------------------R22------------------

(defrule Discharge_from_the_Eye22 ( ifYesNochoisell yes)

TretractChy <- (ifYesNochoisell yes)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " You are suffering from Dacryocystitis OR Stye OR Conjunctivitis..." crlf crlf " Thank you for using my Program... "crlf crlf )

)

Правило R23 формирует сообщение «Вы должны быть уверены в ваших симптомах. Попытайтесь снова» при ответе «Нет» на вопрос из R11.

..------------------R23------------------

(defrule Dischaгge_fгom_the_Eуе23 ( ifYesNochoisell no)

TretractChy <- (ifYesNochoisell no)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " You should be sure in your symptoms.."

crlf crlf " Thank you for using my Program. . . "crlf crlf )

)

Правило R24 формирует вопрос «Страдаете ли вы от размытости зрения?» при ответе «Нет» на вопрос из R9, ожидает ответ, добавляя его в базу данных вместе с ответом на вопрос из R12.

..------------------R24------------------

(defrule Discharge_from_the_Eye24 ( ifYesNochoise9 no)

TretractChy <- (ifYesNochoise9 no)

(not (ifYesNochoisel2 ?))

=>

  • (retract ?retractChy)
  • (printout t crlf crlf crlf " Are you suffering from blurred vision ? (yes | no) " crlf crlf " Your answer: " )
  • (assert (ifYesNochoisel2 (read)))

)

Правило R25 формирует вопрос «Страдаете ли вы от болей и покраснения, чувства чрезмерного разрывания, чувствительности к свету, чувства инородного тела в глазу?» при ответе «Да» на вопрос из R12, ожидает ответ, добавляя его в базу данных вместе с ответом на вопрос из R13.

..------------------R25------------------

(defrule Discharge_from_the_Eye25 ( ifYesNochoisel2 yes)

TretractChy <- (ifYesNochoisel2 yes)

(not (ifYesNochoisel3 ?))

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " Are you suffering from pain and redness "crlf " excessive tearing " crlf " sensitivity to light " crlf

" feeling of foreign body T (yes I no) " crlf crlf " Your answer: " )

(assert (ifYesNochoisel3 (read)))

)

Правило R26 формирует диагноз «Вы страдаете от роговичного трения или роговичной язвы» при ответе «Да» на вопрос из R13 и выводит на экран сообщение «Благодарю вас за использование моей программы».

;;------------------R26------------------

(defrule Discharge_from_the_Eye26 ( ifYesNochoisel3 yes)

TretractChy <- (ifYesNochoisel3 yes)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf "You are suffering from Corneal Abrasion 0R Corneal Ulcer ... " crlf crlf " Thank you for using my Program.. . "crlf crlf )

)

Правило R27 формирует вопрос «Страдаете ли вы от красного нароста на краю века, истечения гноя из нароста, болезненности нароста?» при ответе «Да» на вопрос из R13, ожидает ответ, добавляя его в базу данных вместе с ответом на вопрос из R14.

  • ------------------R27------------------
  • (defrule Discharge_from_the_Eye27 ( ifYesNochoisel3 no)
  • ?retractChy <- (ifYesNochoisel3 no)
  • (not (ifYesNochoisel4 ?))

=>

  • (retract ?retractChy)
  • (printout t crlf crlf crlf " Are you suffering from eyes red lump on the edge of eyelid " crlf " lump may drain pus " crlf " painful lump ? (yes | no) " crlf crlf " Your answer: " )
  • (assert (ifYesNochoisel4 (read)))

)

Правило R28 формирует диагноз «Вы страдаете от ячменя или хаза- лиона» при ответе «Да» на вопрос из R14 и выводит на экран сообщение «Благодарю вас за использование моей программы».

;;------------------R28------------------

(defrule Discharge_from_the_Eye28 ( ifYesNochoisel4 yes)

TretractChy <- (ifYesNochoisel4 yes)

=>

  • (retract ?retractChy)
  • (printout t crlf crlf crlf "You are suffering from Stye OR Chalazion... "

crlf crlf " Thank you for using my Program... "crlf crlf )

)

Правило R29 формирует вопрос «Страдаете ли вы от слабости одной стороны лица, недавнего вирусного заболевания, свисания нижнего века, трудности закрытия век, выделений из глаз?» при ответе «Нет» на вопрос из R12, ожидает ответ, добавляя его в базу данных вместе с ответом на вопрос из R15.

;;------------------R29------------------

  • (defrule Discharge_from_the_Eye29 ( ifYesNochoisel2 no)
  • ?retractChy <- (ifYesNochoisel2 no)
  • (not (ifYesNochoisel5 ?))

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " Are you suffering from weakness of one side of the face "crlf " recent viral illness " crlf " drooping of lower eyelid " crlf " difficulty closing eyelid " crlf

" discharge from the eye ? (yes| no) " crlf

crlf

" Your answer: " )

(assert (ifYesNochoisel5 (read)))

)

Правило R30 формирует диагноз «Вы страдаете от паралича Белла, или множественного склероза, или последствий удара, или акустической ней- ромы» при ответе «Да» на вопрос из R15 и выводит на экран сообщение «Благодарю вас за использование моей программы».

..------------------R30------------------

  • (defrule Discharge_from_the_Eye30 ( ifYesNochoisel5 yes)
  • ?retractChy <- (ifYesNochoisel5 yes)

=>

  • (retract ?retractChy)
  • (printout t crlf crlf crlf "You are suffering from Bell's Palsy OR Multiple Sclerosis OR Stroke OR Acoustic Neuroma..." crlf crlf

" Thank you for using my Program.. . "crlf crlf )

)

Правило R31 формирует сообщение «Вы должны быть уверены в ваших симптомах. Попытайтесь снова» при ответе «Нет» на вопрос из R15.

; .------------------R31------------------

(defrule Discharge_from_the_Eye31 ( ifYesNochoisel5 no)

TretractChy <- (ifYesNochoisel5 no)

=>

(printout t crlf crlf crlf " You should be sure in your symptoms.. Try again..." crlf crlf " Thank you for using my Program... "crlf crlf )

)

Правило R32 формирует сообщение «Вы должны быть уверены в ваших симптомах. Попытайтесь снова» при ответе «Нет» на вопрос из R14.

..------------------R32------------------

(defrule Discharge_from_the_Eye32 ( ifYesNochoisel4 no)

TretractChy <- (ifYesNochoisel4 no)

=>

  • (retract TretractChy)
  • (printout t crlf crlf crlf " You should be sure in your symptoms.. Try again..." crlf crlf

" Thank you for using my Program.. . "crlf crlf )

)

Интерфейс пользователя реализован на английском языке как меню, предлагающее либо диагностику болезни, либо выход из программы. В полной версии системы меню содержит пункты нескольких глазных болезней. Когда система стартует, меню отображается на экране, и пользователю предлагается выбрать пункт меню. Если пользователь хочет диагностировать свое заболевание, он выбирает пункт 1. Система задает вопросы для получения информации о симптомах. В приведенном далее диалоге можно видеть, что в итоге система информирует пользователя о том, что он страдает от бактериального конъюнктивита или блефарита.

Вариант диалога системы и пользователя (пациента) имеет следующий вид.

Choose one of problem areas listed below

  • 1. Discharge from the eye
  • 2. EXIT

Enter no. of your choise: 1

Is your eyes red? | Yes | No |

Your answer: Yes

Is your eyes swollen eyelids? | Yes | No |

Your answer: Yes

Is your eyes pus like discharge and crusting of eyelids on

awakening? | Yes | No |

Your answer: Yes

Your suffer from Bacterial Conjunctivitis OR Blepharitis

Thank you for using my program...

Применение ЭС в медицине очень интересно, особенно в области диагностики различных заболеваний и рекомендаций по их излечению. В 1980—1990-е гг. было разработано множество ЭС медицинского назначения, но до сих пор классическим вариантом считается система MYCIN, выполненная на продукционных правилах и предназначенная для диагностики нескольких видов болезней.

Представленная здесь система демонстрирует возможность поддержки принятия решений врачом или информатором пациента только об одном из заболеваний глаз. При должном развитии в плане увеличения количества диагностируемых глазных болезней и улучшения точности диагноза такая система может быть интерактивным инструментом как для обучения, так и для консультаций по глазным болезням.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >