Разработка программного модуля для автоматизации процесса проверки цветоощущения человека (тест Рабкина) в среде Delphi 7

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

МИНОБРНАУКИ РОССИИ

Государственное образовательное учреждение высшего профессионального образования

«Санкт-Петербургский государственный электротехнический университет „ЛЭТИ“ им. В. И. Ульянова (Ленина)»

(СПбГЭТУ)

Кафедра БТС

Индивидуальное домашнее задание по дисциплине:

Программные средства создания медицинских информационных систем на тему: «Разработка программного модуля для автоматизации процесса проверки цветоощущения человека (тест Рабкина) в среде Delphi 7»

Выполнили: Опаснова М. И.

Талипова А. И.

гр. 9503

Проверил: Болсунов К. Н.

Санкт-Петербург

2013 г

Цель работы: разработка в среде Delphy 7 программного модуля для автоматизации процесса проверки цветоощущения человека.

Исходные данные: набор таблиц Рабкина, таблица для диагностики нарушений цветоощущения, правила прохождения теста, среда программирования Delphi7.

Задачи:

· Разработка базы данных

· Программная реализация алгоритма диагностики нарушения цветоощущения

· Разработка интерфейса приложения

· Тестирование разработанной программы

Введение

Дальтонимзм, цветовая слепота -- наследственная, реже приобретённая особенность зрения человека и приматов, выражающаяся в неспособности различать один или несколько цветов.

Причина нарушений цветового зрения

У человека в центральной части сетчатки расположены цветочувствительные рецепторы -- нервные клетки, которые называются колбочками. Каждый из трёх видов колбочек имеет свой тип цветочувствительного пигмента белкового происхождения. Один тип пигмента чувствителен к красному цвету с максимумом 552--557 нм, другой -- к зелёному (максимум около 530 нм), третий -- к синему (426 нм). Люди с нормальным цветным зрением имеют в колбочках все три пигмента (красный, зелёный и синий) в необходимом количестве. Их называют трихроматами.

Диагностика

Характер цветового восприятия определяется на специальных полихроматических таблицах Рабкина. В наборе таблицы, изображение на которых (обычно цифры) состоит из множества цветных кружков и точек, имеющих одинаковую яркость, но несколько различных по цвету. Человеку с частичной или полной цветовой слепотой (дальтонику), не различающему некоторые цвета на рисунке, таблица кажется однородной. Человек с нормальным цветовосприятием (нормальный трихромат) способен различить цифры или геометрические фигуры, составленные из кружков одного цвета.

Дихроматы бывают слепыми на красный цвет (протанопия), у которых воспринимаемый спектр укорочен с красного конца, и слепыми на зелёный цвет (дейтеранопия). При протанопии красный цвет воспринимается более тёмным, смешивается с тёмно-зелёным, тёмно-коричневым, а зелёный -- со светло-серым, светло-жёлтым, светло-коричневым. При дейтеранопии зелёный цвет смешивается со светло-оранжевым, светло-розовым, а красный -- со светло-зелёным, светло-коричневым.

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

Общие сведения о тесте на цветоощущение (тесте Рабкина)

Назначение

Таблицы предназначены для исследования цветового зрения и диагностики различных форм и степеней цветовой патологии. Набор таблицы содержит две группы — основную (таблицы 1, 2, 5, 6, 9, 10), предназначенную для определения адекватного состояния исследуемого, и контрольную (таблицы 3, 4, 7, 8) — для дифференциальной диагностики форм и степеней расстройства цветового зрения.

Применение

цветоощущение человек диагностика зрение

Исследуемого усаживают спиной к окну или источнику света и предлагают ему держать голову прямо, не двигая и не поворачивая ее в разные стороны. Таблицы располагают в строго вертикальной плоскости на уровне глаз исследуемого на расстоянии 0,5 — 1 м от него. Время демонстрации одной таблицы не должно превышать 8 сек. Не рекомендуется класть таблицы на стол или держать их в наклонной плоскости: это может отразиться на точности методики и выводах исследования.

Ответы исследуемого заносят в специальную карточку для регистрации данных исследования цветоощущения. Если исследуемый прочел таблицу правильно, ставят плюс (+), если неправильно — знак минус (-).

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

Классификация цветового зрения

Таблица 1 Классификация цветового зрения

Вид

Форма

Нормальная трихромазия

-

Дихромазия

Протанопия

Дейтеранопия

Тританопия

Таблица 2 — Таблица для диагностики нарушений цветоощущения

таблицы

Читаемость таблиц

Н

Дихромазия

Пр

Де

1

96

96

96

2

?^

?^

?^

3

136

68, 69

66, 69

4

?^

?

^

5

5

5

5

6

36

36

36

7

30

106

16

8

96

9

6

9

14

14

14

10

9

9

9

Н — нормальные трихроматы, Пр — протанопы, Де — дейтеранопы

Программная разработка

Общие сведения

Для разработки программного модуля проверки цветоощущения человека использовалась среда программирования Delphi 7. Операционная система, необходимая для обеспечения функционирования программы — Windows 7 (64 разрядная операционная система с установленной памятью 4 ГБ).

Функциональное назначение

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

Описание логической структуры

Структура и принцип работы программы

Программа представляет собой приложение с графическим интерфейсом пользователя, которая ссылается на 6 других программ, отвечающих за соответствующие формы. Первая форма — «Тест Рабкина» отображает правила прохождения теста и предлагает пройти регистрацию. Вторая форма — «Регистрация» запрашивает фамилию, имя, отчество пользователя, сохраняет их в базе данных и позволяет перейти к тесту. Третья форма — «Прохождение теста» отображает поочередно таблицы Рабкина, сопровождаемые вариантами ответов. Четвертая форма оповещает об окончании теста и предлагает посмотреть результат. Пятая форма — «Заключение» представляет заключение теста в виде тестового сообщения и круговой диаграммы. Шестая форма позволяет окончить тест на любом этапе его прохождения.

На рисунке 1 представлен алгоритм проверки цветоощущения.

/

Рис. 1 Алгоритм проверки цветоощущения

При запуске программы на экране появляется окно приложения, на котором отображены правила прохождения теста и имеется кнопка «Регистрация» (рисунок 2), активация которой вызывает следующее окно «Регистрация».

Рис. 2 Окно приложения «Тест Рабкина»

В ячейки вызванного окна необходимо вбить данные испытуемого (рисунок 3).

Рис. 3 Окно приложения «Регистрация»

При нажатии на кнопку «ОК» будет вызвано окно «Прохождение теста», которое отвечает за процесс тестирования (рисунок 4).

Рис. 4 Окно приложения «Прохождение теста»

В окне «Прохождение теста» имеется кнопка «Завершить тест», которая вызывает диалоговое окно, позволяющее прервать процедуру теста на любом этапе его прохождения (рисунок 5).

Рис. 5 Окно приложения «Прохождение теста» при активации кнопки «Завершить тест»

После полноценной процедуры прохождения теста на экране появляется окно с кнопкой «Посмотреть результат», после нажатия которой вызывается окно «Заключение», в котором отображены диаграмма результатов теста, сообщения об адекватности полученных результатов и диагноз (рисунок 6).

Рис. 6 Окно приложения «Заключение»

Данные исследуемого, а также заключение о наличие патологии хранятся в базе данных (рисунок 7).

Рис. 7 База данных

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

Коды программ каждой формы представлены в разделе ПРИЛОЖЕНИЯ.

Принципы работы программ

Программную реализацию теста обеспечивают 6 программ: «test_rabkina. dfm», «Unit5. dfm», «Unit1. dfm», «Unit3. dfm», «Unit4. dfm», «Unit2. dfm».

На рисунке 8 представлен алгоритм программы «test_rabkina. dfm»

/

Рис. 8 Алгоритм программы «test_rabkina. dfm»

Окно программы «test_rabkina. dfm» имеет кнопку «Регистрация», которая отвечает за вызов следующей программы «Unit5. dfm» и базы данных.

На рисунке 9 представлен алгоритм программы «Unit5. dfm».

/

Рис. 9 Алгоритм программы «Unit5. dfm»

Программа «Unit5. dfm» осуществляет ввод данных в базу данных и вызывает следующую программу «Unit1. dfm».

Алгоритм программы «Unit1. dfm» представлен на рисунке 10.

Рис. 10 Алгоритм программы «Unit1. dfm»

Программа «Unit1. dfm» отвечает за запуск таймера и смену таблиц. Каждая таблица сопровождается вопросом и вариантами ответов, из которых необходимо выбрать один. Время демонстрации каждой таблицы составляет 8 сек, по истечении которых программа автоматически перелистывает на следующую таблицу. Всего таблиц 10. И после показа последней таймер прекращает работу. После остановки таймера программа вызывает форму «Тест пройден». Если во время теста пользователь нажмет на кнопку «Завершить тест» процедура теста прервется.

/

Рис. 11 алгоритм программы «Unit3. dfm»

Алгоритм программы «Unit3. dfm» представлен на рисунке 11.

Когда вызывается программа «Unit3. dfm» на экране появляется окно с кнопкой «Посмотреть результаты», нажав на которую, вызовется программа «Unit4. dfm» и форма «Заключение».

На рисунке 12 представлен алгоритм программы «Unit4. dfm».

Рис. 12 Алгоритм программы «Unit4. dfm»

Программа «Unit4. dfm» отвечает за вывод заключения о прохождении теста. Если количество правильных ответов на таблицы из 1й группы составляет меньше 75%, то тест признают недействительным. Если количество правильных ответов на таблицы из 2й группы составляет 50% и в ответах были в равной степени признаки протанопии и дейтеранопии, то тест также признают недействительным. Если количество правильных ответов на таблицы из 1й группы составляет больше 75% и количество правильных ответов на таблицы из 2й группы составляет 50%, то пациент является нормальным трихроматом. Если количество ответов, отвечающих за признаки протанопии перевешивают количество ответов, отвечающих за признаки дейтеранопии, то пациент является протонопом, если наоборот — дейтеранопом. На форме «Заключение» имеется кнопка, при нажатии которой программа полностью закрывается.

Вывод

В результате проделанной работы был разработан программный модуль процесса проверки цветоощущения человека. Была разработана база данных, в которую сохранятся данные пациента и заключение. Для наглядности в заключении имеется диаграмма результатов теста.

ПРИЛОЖЕНИЕ А

Код программы «test_rabkina. dfm», отвечающей за форму «Тест Рабкина»

unit test_rabkina;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TTest = class (TForm)

Button1zapusktesta: TButton;

BitBtn1: TBitBtn;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

procedure Button1zapusktestaClick (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Test: TTest; a, b, c, d: integer;

implementation

uses Unit1, Unit5;

{$R *. dfm}

procedure TTest. Button1zapusktestaClick (Sender: TObject);

begin

samtest. Show;

samtest. timer1. Enabled:=true;

end;

procedure TTest. BitBtn1Click (Sender: TObject);

begin

Form5. Show;

Form5. ADOQuery1. Insert;

BitBtn1. Visible:=False;

end;

end.

ПРИЛОЖЕНИЕ Б

Код программы «Unit5. dfm», отвечающей за форму «Регистрация»

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, StdCtrls, Buttons, Mask, DBCtrls, ADODB;

type

TForm5 = class (TForm)

ADOConnection1: TADOConnection;

ADOQuery1: TADOQuery;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

BitBtn1: TBitBtn;

DataSource1: TDataSource;

StaticText1: TStaticText;

StaticText2: TStaticText;

StaticText3: TStaticText;

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5; outfile: TextFile;

implementation

uses test_rabkina, Unit4;

{$R *. dfm}

procedure TForm5. BitBtn1Click (Sender: TObject);

begin

ADOQuery1. Post;

Test. Button1zapusktesta. Visible:=True;

AssignFile (outfile, 'F: kursovajaoutfile. txt');

Rewrite (outfile);

writeln (outfile, DBEdit1. Text);

writeln (outfile, DBEdit2. Text);

writeln (outfile, DBEdit3. Text);

close;

end;

end.

ПРИЛОЖЕНИЕ В

Код программы «Unit1. dfm», отвечающей за форму «Прохождение теста»

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, XPMan, IniFiles;

type

Tsamtest = class (TForm)

XPManifest1: TXPManifest;

Label1: TLabel;

Timer1: TTimer;

Label2: TLabel;

Label3: TLabel;

Image1: TImage;

Label4: TLabel;

Button1: TButton;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

procedure FormCreate (Sender: TObject);

procedure Timer1Timer (Sender: TObject);

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

a, b, c, d: integer;

end;

var

samtest: Tsamtest; sec, n, a, b, c, d: integer; secs, s, m: string; T: TIniFile;

implementation

uses Unit2, test_rabkina, Unit3, Unit4;

{$R *. dfm}

procedure Tsamtest. FormCreate (Sender: TObject);

begin

n: =0;

sec: =8;

end;

procedure Tsamtest. Timer1Timer (Sender: TObject);

begin

sec: =sec-1;

secs: ='0'+inttostr (sec);

m: =ExtractFilePath (Application. ExeName);

T: =TIniFile. Create (m+''+'t. ini');

if sec<1 then begin n: =n+1; sec: =8; end;

if (sec=8) then begin RadioButton1. Checked:=false; RadioButton2. Checked:=false;RadioButton3. Checked:=false;end;

if (sec=1) then if (RadioButton1. Caption=T. ReadString ('v'+IntToStr (n), 'm', 'все')) then if RadioButton1. Checked then a: =a+1;

if (sec=1) then if (RadioButton1. Caption=T. ReadString ('v'+IntToStr (n), 'n', 'все')) then if RadioButton1. Checked then b: =b+1;

if (sec=1) then if (RadioButton2. Caption=T. ReadString ('v'+IntToStr (n), 'p', 'все')) then if RadioButton2. Checked then c: =c+1;

if (sec=1) then if (RadioButton3. Caption=T. ReadString ('v'+IntToStr (n), 'd', 'все')) then if RadioButton3. Checked then d: =d+1;

if n>9 then timer1. Enabled:=false;

if n>9 then samtest. Close;

Label1. Caption:=secs;

s: =ExtractFileDir (IntToStr (n)+'. bmp');

Image1. Picture. LoadFromFile (s+'pictures'+IntToStr (n)+'. bmp');

RadioButton1. Caption:=T. ReadString ('v'+IntToStr (n), 'var1', 'все');

RadioButton2. Caption:=T. ReadString ('v'+IntToStr (n), 'var2', 'все');

RadioButton3. Caption:=T. ReadString ('v'+IntToStr (n), 'var3', 'все');

T. Free;

if (n=10) then Form3. Show;

end;

procedure Tsamtest. Button1Click (Sender: TObject);

begin

timer1. Enabled:=false;

Form2. ShowModal;

if Form2. ModalResult=mrYes then Test. Close; samtest. Close;

if Form2. ModalResult=mrNo then n: =n; timer1. Enabled:=true; samtest. Show;

end;

end.

ПРИЛОЖЕНИЕ Г

Код программы «Unit2. dfm», отвечающей за форму прекращения теста

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm2 = class (TForm)

Button1: TButton;

Button2: TButton;

Label1: TLabel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *. dfm}

end.

ПРИЛОЖЕНИЕ Д

Код программы «Unit3. dfm», отвечающей за диалоговое окно «Тест пройден»

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm3 = class (TForm)

Label1: TLabel;

Button1: TButton;

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit4;

{$R *. dfm}

procedure TForm3. Button1Click (Sender: TObject);

begin

Form4. Show;

Form3. Close;

end;

end.

ПРИЛОЖЕНИЕ Е

Код программы «Unit4. dfm», отвечающей за форму «Заключение»

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DBCtrls, ADODB, ShellApi,

Buttons;

type

TForm4 = class (TForm)

Chart1: TChart;

Series1: TPieSeries;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

BitBtn1: TBitBtn;

procedure FormShow (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4; e, f, g, h: extended;

implementation

uses Unit1, Unit5;

{$R *. dfm}

procedure TForm4. FormShow (Sender: TObject);

begin

e: =round ((samtest. a*100)/6);

f: =round ((samtest. b*100)/4);

g: =round ((samtest. c*100)/4);

h: =round ((samtest. d*100)/4);

Label2. Caption:=Floattostr (e);

With Series1 do

begin

Clear;

Add (f, 'нормальный трихромат', clYellow);

Add (g,'протаноп', clBlue);

Add (h,'дейтераноп', clRed);

end;

if (e< 75)

then

begin Label4. Caption:= 'Результат теста не соответствует действительности. ';

end;

if (e> =75) then

if ((f=50) and (f=g) or (h=f)) then

Label4. Caption:= 'Результат теста не соответствует действительности. '

else if (g=50) and (h=g) then Label4. Caption:= 'Результат теста не соответствует действительности. ';

if (e> =75) then

begin

if (f> g) AND (f> h) then

begin

Label4. Caption:=Пациент является нормальным трихроматом';

end;

end;

if (e> =75) then

begin

if (g> h) AND (g> f) then

begin

Label4. Caption:= 'У пациента обнаружено нарушение цветового зрения — протанопия ';

end;

end;

if (e> =75) then

begin

if (h> g) AND (h> f) then

begin

Label4. Caption:= 'У пациента обнаружено нарушение цветового зрения — тританопия ';

end;

end;

Form5. ADOQuery1. Edit;

Form5. ADOQuery1. FieldByName ('Заключение'). AsString:=Label4. Caption;

Form5. ADOQuery1. Post;

writeln (outfile, Label4. Caption);

CloseFile (outfile);

end;

procedure TForm4. BitBtn1Click (Sender: TObject);

begin

close;

end; end.

ПоказатьСвернуть
Заполнить форму текущей работой