Интеллектуальная система диагностирования глазных заболеваний человека

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 13.11.2015
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

13. Розенфельд А. Симптомы: Пер. с англ. - М.: Центр общечеловеческих ценностей, 1993. - 367с.

14. Кански, Д. Клиническая офтальмология: систематизированный подход. Пер. с англ. / Д. Кански. - М.: Логосфера, 2006. - 744 с.: ил.

15. Д.И. Муромцев. Введение в технологию экспертных систем. - СПб: СПб ГУ ИТМО, 2005. - 93 с.

16. Глухих И.Н. Интеллектуальные информационные системы : учеб. Пособие для высш. проф. образования / И.Н. Глухих. - М.: Издательский центр «Академия», 2010. - 112 с.

17. Дзюбан Юрий, Болдак Людмила. Анализ алгоритмов вывода в Байесовских сетях доверия. Міжнародна конференція "Високопродуктивні обчислення" HPC-UA'2012 (Україна, Київ, 8-10 жовтня 2012 року). 167-169 с.

18. Карпов В.Н. Юдин. Методы добычи данных при построении локальной метрики в системах вывода по прецедентам

19. Хлопотов М.В. Модели и алгоритмы интеллектуального анализа образовательных данных для поддержки принятия решений [Текст]: дис. на соиск. степ. канд. тех. наук. 15.12.2014. / Горлушкина Наталья Николаевна. - Санкт-Петербург, 2014. - 127с.

20. Хлопотов М.В. Модели и алгоритмы интеллектуального анализа образовательных данных для поддержки принятия решений [Текст]: автореф. дис. на соиск. степ. канд. тех. наук. (05.13.06) / Горлушкина Наталья Николаевна; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики. - Санкт-Петербург, 2014. - 18с.

21. В. Ф. Мусина, Байесовские сети доверия как вероятностная графическая модель для оценки медицинских рисков, Тр. СПИИРАН, 2013, выпуск 24, 135-151

22. Тулупьев А.Л., Николенко С.И., Сироткин А.В. Байесовские сети: Логико-вероятностный подход. - СПб.: Наука, 2006. - 607с.

23. Концепция разработки web-приложений

24. PHP, Ruby, Python - краткая характеристика трёх языков программирования / Сайтостроение от А до Я

25. CSS / - Википедия. Свободная энциклопедия

26. HTML / - Википедия. Свободная энциклопедия

27. Денвер(программа) / - Википедия. Свободная энциклопедия

28. PhpStorm - интегрированная среда разработки на PHP / - JetBrains - продукты и разработки

29. Apache / - Википедия. Свободная энциклопедия

30. MySQL / Википедия. Свободная энциклопедия

31. Всемирный день зрения / - ПроЗрение

Приложение А

Список использованных для тестирования симптомов, факторов и диагнозов

Диагнозы:

1. Амблиопия;

2. Астигматизм;

3. Блефарит;

4. Близорукость (миопия);

5. Глаукома;

6. Дальнозоркость;

7. Катаракта;

8. Кератоконус;

9. Кератит;

10. Компьютерный зрительный синдром;

11. Конъюнктивит;

12. Макулодистрофия (ВМД);

13. Мушки в глазах;

14. Отслойка сетчатки;

15. Офтальморозацеа;

16. Птеригиум;

17. Синдром сухого глаза;

18. Халязион;

19. Химический ожог глаз;

20. Электроофтальмия;

21. Эндокринная офтальмопатия;

22. Эписклерит;

23. Ячмень (гордеолум).

Симптомы:

1. ухудшение зрения одного или обоих глаз;

2. затруднение восприятия объемных предметов и оценки расстояния до предметов, нарушение аккомодации и бинокулярного зрения;

3. искажение или размытость, искривление очертаний предметов;

4. двоение изображения;

5. быстрая утомляемость глаз (астенопия);

6. головная боль;

7. необходимость прищуриваться, чтобы лучше рассмотреть какой-либо предмет;

8. раздражение, отечность, припухлость и покраснение век;

9. раздражение глаз;

10. покраснение слизистой оболочки глазного яблока;

11. шелушение краев век, корочки на ресницах по утрам, появление пенистого секрета, патологическое отделяемое в уголках глаз;

12. ощущение инородного тела в глазу;

13. жжение;

14. зуд;

15. выпадение ресниц;

16. наличие слизистого или гнойного отделяемого;

17. сухость в глазах;

18. повышенная чувствительность к свету;

19. слезотечение;

20. боль в глазах;

21. дискомфорт;

22. резь в глазах;

23. боли в области лба, висков, глазниц;

24. ухудшение периферического зрения;

25. «тёмное», непрозрачное пятно в поле зрения;

26. затуманивание зрения;

27. значительное ухудшение зрения в темное время суток;

28. колебания остроты зрения;

29. «радужные круги» перед глазами при взгляде на яркий свет;

30. амблиопия или косоглазие;

31. прогрессирующее снижение остроты зрения;

32. снижение способности различать цвета;

33. затруднения при чтении;

34. появление ореолов вокруг ярких источников света;

35. нарушение блеска и гладкости поверхности роговицы;

36. блефароспазм (судорожное сжатие век);

37. уменьшение зрительной работоспособности;

38. чувство песка под веками;

39. плавающие в поле зрения помутнения в виде пятен, нитей, мушек, которые лучше всего видны на светлом фоне и при хорошем освещении;

40. появление молний и искр в глазах, темной пелены;

41. перхоть на ресницах, жирные чешуйки у корня ресниц;

42. периодические ячмени и халазионы, блефарит, рецидивирующие инфекции глаз;

43. боль при закапывании индифферентных глазных капель;

44. образование красного или серого пятна на обратной поверхности века;

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

46. чувство сдавливания;

47. хемоз (отек конъюнктивы);

48. прозрачное отделяемое из конъюнктивальной полости;

49. повышение температуры тела, общее недомогание.

Факторы:

1. возраст с 9 до 40;

2. возраст после 40;

3. возраст после 55;

4. у ближайших родственников имеются проблемы с глазами;

5. долгое время проводится перед компьютером, планшетом, мобильным телефоном;

6. долгое время проводится в запылённой (задымлённой, ветреной) окружающей среде;

7. имеются заболевания щитовидки;

8. имеется сахарный диабет;

9. имеются аллергические заболевания;

10. имеется сильная близорукость или дальнозоркость;

11. курение;

12. интенсивный источник света, воздействие ультрафиолета;

13. стафилококковая инфекция.

Приложение Б

Код программы

Entity.php

<?php

abstract class Entity{

protected $id;

protected $name;

protected $prior;

protected $patiens;

function __construct($id, $name) {

$this->id = $id;

$this->name = $name;

}

function setPrior($prior){

$this->prior = $prior;

}

function setPatiens($patiens){

$this->patiens = $patiens;

}

function getId() {

return $this->id;

}

function getName() {

return $this->name;

}

function getPrior() {

return $this->prior;

}

function getPatiens() {

return $this->patiens;

}

function addPatien(){}

}

Diagnosis.php

<?php

include_once "entity.php";

class Diagnosis extends Entity{

protected $post;

protected $description;

protected $symptoms = array();

protected $factors = array();

function __construct($id, $name, $prior, $patiens, $description) {

parent::__construct($id, $name, $prior, $patiens);

$this->prior = $prior;

$this->patiens = $patiens;

$this->description = $description;

$this->post = 0;

}

public function setPost($post) {

$this->post = $post;

}

public function setSymptoms($symptoms) {

$this->symptoms = $symptoms;

}

public function setFactors($factors) {

$this->factors = $factors;

}

function getPost() {

return $this->post;

}

function getDescription() {

return $this->description;

}

function getSymptoms() {

return $this->symptoms;

}

function getFactors() {

return $this->factors;

}

function addSymptom($symptom){

$this->symptoms[$symptom->getId()] = $symptom;

}

function addFactor($factor){

$this->factors[$factor->getId()] = $factor;

}

function addPatien($sumpatiens) {

$this->patiens +=1;

$this->prior = $this->patiens / ($sumpatiens + 1);

}

function getExistSymptoms() {

$s = $this->getSymptoms();

$count = 0;

foreach ($s as $i => $sim) {

if ($sim->getExist()) {

$count++;

}

}

return $count;

}

}

?>

Entityinfluence.php

<?php

include_once "entity.php";

class EntityInfluence extends Entity{

protected $exist;

function __construct($id, $name) {

parent::__construct($id, $name);

$this->exist = false;

}

function setExist($exist){

$this->exist = $exist;

}

function getExist(){

return $this->exist;

}

}

?>

Symptom.php

<?php

include_once "entityinfluence.php";

class Symptom extends EntityInfluence{

protected $non_prior;

protected $countpatiens; //количество больных с симптомом вне зависимости от диагноза

function __construct($id, $name, $countpatiens) {

parent::__construct($id, $name);

$this->countpatiens = $countpatiens;

}

function setNon_prior($non_prior){

$this->non_prior = $non_prior;

}

function getNon_prior(){

return $this->non_prior;

}

function addPatien($d, $sums) {

$this->patiens += 1;

$this->non_prior = ($this->countpatiens - $this->patiens) / $sums;

$this->prior = $this->patiens / ($d->patiens + 1);

}

}

?>

Factor.php

<?php

include_once "entityinfluence.php";

class Factor extends EntityInfluence{

function addPatien($d, $pf) {

$this->patiens += 1;

$this->prior = (($this->patiens / ($pf + 1)) / count($d->getFactors()) ) * (1 - $d->getPrior());

}

}

?>

Begin_diagnosis.php

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<title>Опрос и сбор жалоб</title>

<link href="style.css" rel="stylesheet">

</head>

<body>

<?php

include_once "menu.php";

include_once "get_from_bd.php";

include_once("class\symptom.php");

include_once("class\\factor.php");

$symptoms_array = getSymptoms(); ?>

<form method="get" action="end_diagnost.php">

<p>Выберите симптомы:</p>

<?php

foreach ($symptoms_array as $id => $s) { ?>

<input type="checkbox" name="<?php echo $id; ?>" value="symptom"><?php echo $s->getName(); ?><br>

<?php }

$factors_array = getFactors(); ?>

<p>Выберите факторы:</p>

<?php foreach ($factors_array as $id => $f) { ?>

<input type="checkbox" name="<?php echo ($id+1000); /*помни об этом */ ?>" value="factor"><?php echo $f->getName();?><br>

<?php } ?>

<input type="submit">

</form>

</body>

</html>

End_diagnosis.php

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<title>Список вероятных диагнозов</title>

<link href="style.css" rel="stylesheet">

</head>

<body>

<?php

include_once "menu.php";

include_once "calculate_probability.php";

function mySortDiagnosis($d1,$d2)

{

if($d1->getPrior() > $d2->getPrior()) return -1;

elseif($d1->getPrior() < $d2->getPrior()) return 1;

else return 0;

}

$symptoms_array = getSymptoms();

$factors_array = getFactors();

foreach ($_GET as $id => $type) {

switch($type) {

case 'symptom':

$symptoms_array[$id]->setExist(true);

break;

case 'factor':

$id -= 1000; //помни об этом

$factors_array[$id]->setExist(true);

break;

default:

echo "Здесь творится что-то непонятное";

}

} ?>

<form method="get" action="selected_symptoms_and_factors.php">

<p>Выбранные симптомы:</p>

<ul>

<?php

foreach ($symptoms_array as $s) {

if ($s->getExist())

echo "<li>".$s->getName()."</li><br>";

} ?>

</ul>

<p>Выбранные факторы:</p>

<ul>

<?php

foreach ($factors_array as $f) {

if ($f->getExist())

echo "<li>".$f->getName()."</li><br>";

}?>

</ul>

</form>

<?php

$diagnosis_array = getDiagnosises($symptoms_array, $factors_array);

//обработаем массив диагнозов, убрав те диагнозы, в которых нет заявленных симптомов

$count = count($diagnosis_array);

for ($i = 1; $i <= $count; $i++) {

if ($diagnosis_array[$i]->getExistSymptoms() == 0) {

unset($diagnosis_array[$i]);

}

else {

if ($diagnosis_array[$i]->getExistSymptoms()/count($diagnosis_array[$i]->getSymptoms()) < 0.2) {

unset($diagnosis_array[$i]);

}

}

}

set_time_limit(300);

foreach ($diagnosis_array as $d) {

$df = 0;

foreach ($d->getFactors() as $f) {

if ($f->getExist()) {

$df += $f->getPrior();

}

}

$d->setPrior($d->getPrior() + $df);

$p = calculate_post($d);

$d->setPost($p);

} ?>

<ol>

<?php

uasort($diagnosis_array,"mySortDiagnosis");

foreach ($diagnosis_array as $d) {

echo '<b>'.$d->getName().'</b> (с вероятностью '.number_format($d->getPost()*100,2).'%)<br>'.$d->getDescription(); ?>

<ul> Симптомы, которые могут появиться:

<?php

foreach($d->getSymptoms() as $s) {

echo '<li>'.$s->getName();

echo '</li>';

} ?>

</ul>

<ul> <?php

$a = $d->getFactors();

if (!empty($a))

echo 'Факторы, усиливающие влияние болезни:';

foreach($a as $f) {

echo '<li>'.$f->getName();

echo '</li>';

} ?>

</ul>

</li>

<!-- Для добавления в БД -->

<form method="post" action="add_diagnosis.php">

<?php foreach ($symptoms_array as $s) {

if ($s->getExist())

echo "<input type='hidden' name='".$s->getId()."' value='symptom' hidden>";

}

foreach ($factors_array as $f) {

if ($f->getExist())

echo "<input type='hidden' name='".($f->getId()+1000)."' value='factor' hidden>";

}

echo "<input name='diagnosis' value='".$d->getId()."' hidden>";

if ($_COOKIE['type'] == 1) {

echo '<input type="submit" value="Добавить диагноз в таблицу">';

} ?>

</form>

<?php //if ($filtr > 4) break;

} ?>

</ol>

</body>

</html>

Calculate_probability.php

<?php

include_once "get_from_bd.php";

function calculate_probability($d, $mas, $masnum, &$masmn){

$pmult = 1;

$pmulf = 1;

$i = 1;

foreach($d->getSymptoms() as $id => $s) {

if ($mas[$i][2] == 1) {

$pmult *= $s->getPrior();

$pmulf *= $s->getNon_prior();

}

else {

$pmult *= 1 - $s->getPrior();

$pmulf *= 1 - $s->getNon_prior();

}

$i++;

}

$pmult *= $d->getPrior();

$pmulf *= (1 - $d->getPrior());

return array(0 => $pmulf, 1 =>$pmult);

}

function get_mas_num($d){

$mas_num = array();

$s = $d->getSymptoms();

foreach($s as $id => $simp) {

$mas_num[$id] = ($simp->getExist()) ? 1 : 0;

}

return $mas_num;

}

function calculate_post($d){

$mas_num = get_mas_num($d);

$mas = array();

$mas_d_tf = array(1 => 0, 1 => 0);

$i = 1;

foreach ($d->getSymptoms() as $id => $s){

$mas[$i] = array (1 => $id, 2 => 0);

$i = $i+1;

}

$masmn = false;

calculate_post_probability_rec($d, 1, $mas, $mas_num, $mas_d_tf, $masmn);

$p = $mas_d_tf;

return $p[1] * $d->getPrior() / ($p[1] * $d->getPrior() + $p[0] * (1 - $d->getPrior()));

}

function calculate_post_probability_rec($d, $k, $mas, $mas_num, &$mas_d_tf, &$masmn){

$count = count($mas_num);

if ($k > $count) {

$res = calculate_probability($d, $mas, $mas_num, $masmn);

return $res;

}

else {

for($i = $k; $i <= $count; $i++) {

if($mas_num[$mas[$i][1]] == 1) {

$mas[$i][2] = 1;

$res = calculate_post_probability_rec($d, $k+1, $mas, $mas_num, $mas_d_tf, $masmn);

}

else {

for ($j = 0; $j < 2; $j++) {

$mas[$i][2] = j;

$res = calculate_post_probability_rec($d, $k+1, $mas, $mas_num, $mas_d_tf, $masmn);

}

}

if (!empty($res)) {

$mas_d_tf[0] += $res[0];

$mas_d_tf[1] += $res[1];

}

}

}

}

?

Размещено на Allbest.ru


Подобные документы

  • Ограничения, присутствующие в предметной области. Проектирование инфологической модели данных. Описание основных сущностей и их атрибутов. Логический и физический уровни модели данных. Реализация базы данных: представления, триггеры, хранимые процедуры.

    курсовая работа [1,7 M], добавлен 10.02.2013

  • Разработка информационно-аналитической системы агентства недвижимости. Обоснование выбора архитектуры базы данных и СУБД. Моделирование потоков данных (DFD диаграмм). Проектирование инфологической модели данных с использованием модели "сущность-связь".

    дипломная работа [5,4 M], добавлен 06.06.2013

  • Семантическое моделирование данных. Основные понятия модели Entity-Relationship. Построение инфологической модели в виде диаграммы "Таблица-связь". Проектирование физической модели базы данных. Разработка формы заставки, главной, вторичных кнопочных форм.

    курсовая работа [1,5 M], добавлен 26.06.2012

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

    дипломная работа [3,6 M], добавлен 11.03.2010

  • Пример экспертной системы с использованием метода Криса-Нейлора. Структура базы данных. Стратегия вывода результатов выбора страны. Руководство пользователя, редактирование базы знаний. Режим тестирования, его завершение, блок объяснения решения.

    контрольная работа [1,6 M], добавлен 29.12.2012

  • Особенности разработки инфологической модели и создание структуры реляционной базы данных. Основы проектирования базы данных. Разработка таблиц, форм, запросов для вывода информации о соответствующей модели. Работа с базами данных и их объектами.

    курсовая работа [981,4 K], добавлен 05.11.2011

  • Концептуальное и инфологическое проектирование базы данных в системе управления базами данных Microsoft Access. Физическое проектирование базы данных "Магазин спорттоваров". Тестирование и отладка базы данных, составление руководства пользователя.

    курсовая работа [6,7 M], добавлен 22.11.2022

  • Составление схемы концептуальной модели данных. Разработка структуры реляционной базы данных и интерфейса пользователя. Особенности главных этапов проектирования базы данных. Способы реализации запросов и отчетов. Специфика руководства пользователя.

    курсовая работа [186,9 K], добавлен 18.12.2010

  • Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.

    курсовая работа [3,7 M], добавлен 04.12.2014

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.