·  Установить контроль над доступом приложения к ресурсам ограниченного пользования.

·  Обеспечить выполнение кода приложения в требуемом режиме.

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

Приложение можно защитить от несанкционированного доступа, используя следующие средства безопасности:

·  Средства безопасности IIS как часть общего набора функций веб-сервера IIS. Эти средства включают поддержку безопасности на уровне пользователей, компьютеров и файлов Windows.

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

Описание алгоритмов прототипа

В данном разделе будут описан ряд алгоритмов, процедур и функций, написанных в code-behind и front-code, написанных для исполнения программой. В разделе будут отсутствовать примеры кодов алгоритмов, которые не несут в себе никакой уникальности и исходники которых находятся в открытом доступе, например в сети интернет.

Первый алгоритм, будет посвящен «очищению», введенного номера полиса от лишних знаков (пробелов или иных символов), объединению их в одну строку. Объединение номера и серии полиса оптимизирует скорость выборки данных пациента из баз данных MS SQL, обезопасит от возможности вредоносных SQL-инъекций.

Процедура выглядит так. Используется С#:

public void Clear1 (ref string str)

{

str = str. Replace('\n', ' ');

str = str. Replace('\r', ' ');

str = str. Replace('\t', ' ');

string str1="";

if (str == "")

{

return;

}

else

{

int l = 0;

while (l<str. Length)

{

if (str[l] != ' ')

{

str1 = str1 + str[l];

++l;

}

else

{

++l;

}

}

str = str1;

}

Session["Polis"] = string. Concat(str1,str2);

Return;

}

Второй алгоритм, исполняемый локально на компьютере клиента, исполняется во front-code, и осуществляет возможность печати рецепта, электронного талона. Написан на языке Jscript при использовании возможностей, свободно распространяемого, плагина Jquery:

<script language="javascript" type="text/javascript">

function PrintPage(domElementForPrinting) {

var w = window. open("", "print", "width=800, height=600, toolbar=0, location=0, directories=0, menubar=0, scrollbars=0, resizable=0, status=0, fullscreen=0");

w. document. write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www. w3.org/TR/html4/strict. dtd\"><html><head><title>" + document. title + "</title>")

$("style[media |= print]").each(function () {

w. document. write("<style type=\"text/css\" media=\"print\">" + $(this).html() + "</style>");

});

w. document. write("</head><body>\n");

w. document. write(domElementForPrinting. innerHTML);

w. document. write("</body></html>");

setTimeout(function () {

w. document. execCommand('Print', true);

w. close();

}, 1000);

}

</script>

Третий алгоритм - это функция, которая позволяет нам открывать для просмотра любой файл, прикрепленный медицинской карте пациента.

И дополнение к нему, запись файла в базу. Функция вызывается по нажатию кнопки «Просмотреть файл», эта кнопка была описана в интерфейсе врача.

protected void load_Click(object sender, EventArgs e)

{

SqlConnection connection = new SqlConnection("Server=Дмитрий-ПК\\SQLEXPRESS; database=Base; user='polis_user'; password='polis_user'");

connection. Open();

SqlCommand command = new SqlCommand("SELECT fail from filestorage1 where npolis = '" + pacient. Text + "' and failname = '" + ListBox1.SelectedValue. ToString() + "'", connection);

byte[] bytes = (byte[])command. ExecuteScalar();

Response. AddHeader("content-disposition", "attachment;filename=" + ListBox1.SelectedValue. ToString());

ListBox1.ClearSelection();

Response. BinaryWrite(bytes);

}

Как мы видим, первая часть алгоритма преобразовывает бинарные данные из таблиц MS SQL в исходные файлы, пригодные для просмотра, чтения. Вторая часть, соответственно, записывает данные в базу:

if (FileUpload1.FileContent. Length!= 0)

{

byte[] data = new byte[FileUpload1.PostedFile. ContentLength];

FileUpload1.PostedFile. InputStream. Read(data, 0, FileUpload1.PostedFile. ContentLength);

var command3 = new SqlCommand("insert into filestorage1 (npolis, fail, failname) values (@idPolis, @file, @filename)", connection);

command3.Parameters. AddWithValue("@idPolis", npolis. Text);

command3.Parameters. AddWithValue("@file", data);

command3.Parameters. AddWithValue("@filename", FileUpload1.PostedFile. FileName);

command3.Connection = connection;

command3.Transaction = tran;

command3.ExecuteNonQuery();

}

mit();

}

Четвертый алгоритм- это логическая функция, которая проверяет назначенное лечение врачом на предмет противоречия его противопоказаниям. Если противоречие найдено, то никакой записи лечения в базу не произойдет до тех пор, пока ошибка не исправлена. Исходный код выглядит так:

public static bool check(string str, string str2)

{

string tempstr="";

//int i = str. Length;

int i=0;

str += '~';

str2 += '~';

str = str. Replace('\n', '~');

str = str. Replace('\r', '~');

str = str. Replace('\t', '~');

str = str. Replace(',', '~');

str = str. Replace('.', '~');

str = str. Replace(':', '~');

str = str. Replace(';', '~');

str = str. Replace(' ', '~');

str = str. Replace('!', '~');

str = str. Replace('?', '~');

str = str. Replace('\\', '~');

str = str. Replace('/', '~');

str = str. Replace(' ', '~');

while (i < str. Length)

{

if (str[i] != '~')

{

tempstr += str[i];

i++;

}

else

{

if (tempstr!= "" && tempstr. Length>5)

{

tempstr = bstring(0, tempstr. Length - 2);

if (str2.Contains(tempstr))

{

return false;

}

else

tempstr = "";

}

else

{

i++;

}

}

}

return true;

}

В данном разделе мы рассмотрели несколько алгоритмов, работающих непосредственно в прототипе. В целом прототип в себе содержит более пяти тысяч строк кода на разных языка программирования, не считая ручных запросов по базам MS SQL, их подсчет произвести практически невозможно. Несмотря на кажущийся огромный объем кода, легкость «чтения» и понимания взаимодействия структур обеспечена даже начинающему программисту. Такая структура поможет техническому персоналу в скорости развертывания прототипа в реальных условиях.

Заключение

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

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

Проведен анализ трудозатрат внедрения данного проекта в реальную больницу и поликлинику районного масштаба. Развертывание проекта займет от одного до полутора месяцев со штатом в четыре человека, три из которых будут заниматься технической частью, а четвертый подготовкой персонала к изменениям в порядке работы, обучением. Отметим, что стоимость проекта, относительно невысока. Нам не потребуются затратные, суперпроизводительные сервера или дорогие настольные компьютеры для врачей. Для внедрения в небольшую больницу, насчитывающую порядка 20-30 врачей ведущих прием непосредственно на местах, потребуется один сервер эконом-класса (например на основе INTEL XEON серия R55000A), локальная сеть, которую можно организовать несколькими беспроводными роутерами фирмы CISCO серии AirLap. К сожалению, точную стоимость и количество оборудования точно подсчитать не представляется возможным, так как это сильно зависит от особенностей архитектуры здания (толщина стен, этажность и т. п.), объема потока пациентов и так далее.

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

Результаты данной работы были сданы в печать: (Vladimir Averbukh, Nanalya Averbukh, Dmitriy Semenischev: Activity Theory in Practice of Design and Development of Human-Computer Interfaces – труды Российско-Корейского семинара 2012 год.)

Литература

1. Kaptelinin, V. Activity Theory: Implications for human-computer interaction. In B. Nardi, (ed), Context and Consciousness: Activity theory and human-computer interaction. Cambridge, MA: MIT Press. 1996, p. 107 – 110.

2. Kaptelinin V. Activity Theory // Encyclopedia of Human-Computer Interaction. Chapter 16. http://www. interaction-design. org/encyclopedia/activity_theory. html

3. Nardi, B. Activity Theory and Human-Computer Interaction In B. Nardi, (ed), Context and Consciousness: Activity theory and human-computer interaction. Cambridge, MA: MIT Press. 1996, p. 7-16.

4. Rogers, Y. New Theoretical approaches for Human-Computer Interaction. Annual Review of Information, Science and Technology, 38, 2004. Pp. 87-143.

5. Kaptelinin, V., Nardi, B. Activity Theory in HCI: Fundamentals and Reflections. Synthesis Lectures on Human-Centered Informatics. Morgan & Claypool. 2012

Благодарности

это личное мое - заполнен будет позже =)

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5