Разработка комплексной автоматизированной системы управления бюро судебно-медицинской экспертизы для бюро судмедэкспертизы в г. Москва
Цели создания системы. Проектирование и разработка базы данных. Требования к структуре и функционированию системы. Перечень подсистем и их назначение. Требования к способам и средствам связи для информационного обмена между компонентами системы.
| Рубрика | Программирование, компьютеры и кибернетика |
| Вид | дипломная работа |
| Язык | русский |
| Дата добавления | 21.03.2019 |
| Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на Allbest.ru
ВВЕДЕНИЕ
Целью данного дипломного проекта является разработка комплексной автоматизированной системы управления бюро судебно-медицинской экспертизы для бюро судмедэкспертизы, г. Москва.
Основная функция Бюро судебно-медицинской экспертизы Департамента здравоохранения Москвы заключается в производстве качественных судебно-медицинских экспертиз и исследований по заданиям правоохранительных органов.
Бюро судмедэкспертизы осуществляет следующие виды деятельности:
судебно-медицинская экспертиза (исследование) трупов
судебно-медицинская экспертиза (освидетельствование) потерпевших, обвиняемых и других лиц
Бюро состоит из:
Отдела обеспечения основной деятельности
Отделения приема, регистрации, выдачи тел и статистического учета
Отдела экспертизы потерпевших, обвиняемых и других лиц
Отдела комиссионных судебно-медицинских экспертиз
Отдела по перевозке тел умерших (погибших) граждан
Отдела специальных лабораторных исследований
Отделения судебно-гистологических исследований
Танатологических отделений
В настоящее время весь документооборот ведется в письменном виде, что усложняет ведение документов и поиск нужной информации. КАСУ БСМЭ облегчит работу с документами, а также сделает её быстрее, эффективнее и безопасней.
АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
Перечень сокращений и условных обозначений
В данной дипломной работе используется ряд сокращений и условных обозначений для удобства восприятия информации. Они перечислены в таблице 1.
Таблица 1 - Перечень сокращений и условных обозначений
|
Обозначение |
Описание |
|
|
Система |
Комплексная автоматизированная система управления Бюро судебно-медицинской экспертизы |
|
|
БСМЭ |
Бюро судебно-медицинской экспертизы |
|
|
ТО |
Танатологическое отделение |
|
|
СУБД |
Система управления базами данных |
|
|
AD |
Microsoft Active Directory |
|
|
АРМ КАСУ БСМЭ |
Автоматизированное рабочее место в ТО |
|
|
Центральная АРМ КАСУ БСМЭ |
Автоматизированное рабочее место для сотрудников центрального офиса |
|
|
УКТ |
Учетная карточка трупа |
|
|
ПО |
Программное обеспечение |
|
|
Web-Service |
Служба сервера для обмена зашифрованными сообщениями между сервером и клиентом посредством взаимодействия по протоколу TCP/IP |
|
|
UID |
Уникальный идентификационный номер трупа |
Описание предметной области
Система построена с помощью клиент - серверной архитектуры, обмен данными между клиентом и сервером осуществляется по протоколу TCP/IP. Территориально удаленные ТО объединены в виртуальную локальную сеть посредством VPN. Все компьютеры, работающие с системой, входят в единый домен AD.
Архитектура системы строиться из следующих подсистем:
Серверная подсистема - сервер приложения, обеспечивающий прием и передачу информации в СУБД.
База данных - предназначена для хранения информации.
Клиентские приложения - предназначены для работы пользователей с данными, получаемыми и передаваемыми от сервера приложения.
В системе предусмотрены следующие типы клиентских приложений:
АРМ ТО КАСУ БСМЭ - представляет собой клиентское приложение для работы всех сотрудников ТО. Обеспечивает функционал всех бизнес-процессов, протекающих в ТО.
Центральная АРМ КАСУ БСМЭ - представляет собой приложение для работы сотрудников Центрального офиса. Содержит частичный функционал АРМ КАСУ БСМЭ.
АРМ Секционных - представляет собой приложение для работы экспертов и лаборантов в секционных. Ограничена только функционалом проведения наружного и внутреннего исследований.
Цели создания системы
Внедряемая Система должна решать следующие задачи:
Обеспечение автоматизации функций, выполняемых танатологическими отделениями, входящими в состав БСМЭ г. Москвы
Обеспечение сотрудников регистратуры, экспертов и лаборантов танатологических отделений электронными средствами ведения информации
Создание системы автоматизированной статистической отчетности
ВЫБОР ТЕХНОЛОГИЙ РАЗРАБОТКИ
Выбор языка программирования
Для разработки системы использовался объектно-ориентированный стиль программирования. К этому стилю можно отнести такие языки программирования как C#, Java.
C# (произносится как «си шарп») - современный объектно-ориентированный и типобезопасный язык программирования. C# относится к широко известному семейству языков C, и покажется хорошо знакомым любому, кто работал с C, C++, Java или JavaScript.
C# является объектно-ориентированным языком, но поддерживает также и компонентно-ориентированное программирование. Разработка современных приложений все больше тяготеет к созданию программных компонентов в форме автономных и самоописательных пакетов, реализующих отдельные функциональные возможности. Важная особенность таких компонентов - это модель программирования на основе свойств, методов и событий. Каждый компонент имеет атрибуты, предоставляющие декларативные сведения о компоненте, а также встроенные элементы документации. C# предоставляет языковые конструкции, непосредственно поддерживающие такую концепцию работы. Благодаря этому C# отлично подходит для создания и применения программных компонентов.
Вот лишь несколько функций языка C#, обеспечивающих надежность и устойчивость приложений: сборка мусора автоматически освобождает память, занятую уничтоженными и неиспользуемыми объектами; обработка исключений дает структурированный и расширяемый способ выявлять и обрабатывать ошибки; строгая типизация языка не позволяет обращаться к неинициализированным переменным, выходить за пределы массива или выполнять неконтролируемое приведение типов.
В C# существует единая система типов. Все типы C#, включая типы-примитивы, такие как int и double, наследуют от одного корневого типа object. Таким образом, все типы используют общий набор операций, и значения любого типа можно хранить, передавать и обрабатывать схожим образом. Кроме того, C# поддерживает пользовательские ссылочные типы и типы значений, позволяя как динамически выделять память для объектов, так и хранить упрощенные структуры в стеке.
Чтобы обеспечить совместимость программ и библиотек C# при дальнейшем развитии, при разработке C# много внимания было уделено управлению версиями. Многие языки программирования обходят вниманием этот вопрос, и в результате программы на этих языках ломаются чаще, чем хотелось бы, при выходе новых версий зависимых библиотек. Вопросы управления версиями существенно повлияли на такие аспекты разработки C#, как раздельные модификаторы virtual и override, правила разрешения перегрузки методов и поддержка явного объявления членов интерфейса. [1]
Java - сильно типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems.
Изначально разрабатывался как язык для программирования электронных устройств, но позже стал использоваться для написания приложений серверного ПО. Программы на Java - кроссплатформенные, то есть способны работать на любых операционных системах.
Java как язык с поддержкой объектного ориентирования отвечает основным принципам ООП:
Наследование
Полиморфизм
Инкапсуляция
Для разработки был выбран язык программирования - C#. Решающими факторами при выборе стали:
Один из самых стабильных и развивающихся языков
Полная совместимость с ОС Windows
Множество готовых библиотек для расширения функционала [2]
Выбор системы управления базами данных
Система управления базами данных (или сокращенно СУБД) представляет собой программное обеспечение, которое используется для создания и работы с базами данных. Главная функция СУБД - это управление данными (которые могут быть как во внешней, так и в оперативной памяти). СУБД обязательно поддерживает языки баз данных, а также отвечает за копирование и восстановление данных после каких-либо сбоев.
Информация, которая хранится в базах данных, не ограничивается только текстовыми или графическими файлами - современные версии СУБД поддерживают также форматы аудио и видеофайлов.
Основные функции СУБД
управление данными во внешней памяти (на дисках) ;
управление данными в оперативной памяти с использованием дискового кэша;
журнализация изменений, резервное копирование и восстановление базы данных после сбоев;
поддержка языков БД (язык определения данных, язык манипулирования данными).
При выборе СУБД рассматривались 2 реляционные базы данных - MySQL, PostrgeSQL.
MySQL является одной из самых популярных и распространенных СУБД, которая используется во многих компаниях (например, Facebook, Wikipedia, Twitter, LinkedIn, Alibaba и других). MySQL представляет собой реляционную СУБД, которая относится к свободному программному обеспечению: она распространяется на условиях GNU Public License. Как правило, эту систему управления базами данных определяют как хорошую, быструю и гибкую систему, рекомендованную к применению в небольших или средних проектах. У MySQL есть множество различных преимуществ. Например, она поддерживает различные типы таблиц: как известные MyISAM и InnoDB, так и более экзотичные HEAP и MERGE; кроме того, количество поддерживаемых типов постоянно растет. MySQL выполняет все команды быстро - возможно, сейчас это самая быстрая СУБД из всех существующих. С этой системой управления базами данных может одновременно работать неограниченное количество пользователей, а число строк в таблицах может быть равно 50 миллионам.
Так как в сравнении с некоторыми другими СУБД MySQL поддерживает меньшее количество возможностей, то и работать с ней значительно проще, чем, к примеру, с PostgreSQL, о которой будет рассказано ниже.
Первая версия MySQL вышла в 1995 году, и с тех пор состоялось несколько последующих релизов, каждый из которых нес в себе значительные изменения.
Для работы с MySQL используется не только текстовый, но и графический режим. Это возможно благодаря приложению phpMyAdmin: для работы в приложении вам даже не нужно будет знать SQL-команды, а администрировать свою базу данных можно прямо через браузер. [3]
PostgreSQL
Эта свободно распространяемая система управления базами данных относится к объектно-реляционному типу СУБД. Как и в случае с MySQL, работа с PostgreSQL основывается на языке SQL, однако, в отличие от MySQL, PostgreSQL поддерживает стандарт SQL-2011. Эта СУБД не имеет ограничений ни по максимальному размеру базы данных, ни по максимуму записей или индексов в таблице.
Сильными сторонами PostgreSQL считаются:
высокопроизводительные и надёжные механизмы транзакций и репликации
расширяемая система встроенных языков программирования
наследование
легкая расширяемость
PostgreSQL не просто реляционная, а объектно-реляционная СУБД. Это даёт ей некоторые преимущества над другими SQL базами данных с открытым исходным кодом, такими как MySQL, MariaDB и Firebird.
Фундаментальная характеристика объектно-реляционной базы данных - это поддержка пользовательских объектов и их поведения, включая типы данных, функции, операции, домены и индексы. Это делает PostgreSQL невероятно гибким и надежным. Среди прочего, он умеет создавать, хранить и извлекать сложные структуры данных. В некоторых примерах ниже вы увидите вложенные и составные конструкции, которые не поддерживаются стандартными РСУБД. [4]
Именно по - этому в качестве СУБД выбрана PostrgeSQL.
Выбор среды разработки
IDE (англ. Integrated development environment) - интегрированная среда разработки, также единая среда разработки (ЕСР) - комплекс программных средств, используемый программистами для разработки программного обеспечения (ПО). [5]
Основной средой разработки при использовании C# является Microsoft Visual Studio.
Microsoft Visual Studio - линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE,. NET Framework, Xbox, Windows Phone. NET Compact Framework и Silverlight. [6]
Плюсы:
Официальная. Так, как и язык, и среда разработки созданы в Microsoft, логично предположить, что ничего более функционального не найти во всем Интернете. В некоторых случаях без Visual Studio не обойтись - например, при использовании технологий UWP и WPF.
Бесплатная. Версии «Community Edition» для рядового пользователя будет достаточно.
Функциональная. В Visual Studio множество качественных плагинов. С их помощью можно расширить функциональность приложения и подключить другие языки.
Поддерживает платформы. NET. Visual Studio имеет широкие возможности по разработке приложений под Windows, в том числе в. NET-сегменте.
Облачные хранилища. Зарегистрировавшись в сообществе Visual Studio, мы получаем доступ к облачному хранилищу, где можно располагать файлы проектов.
Корпоративность. Технология бэклога позволяет членам команды взаимодействовать при гибкой методологии разработки.
Выбор вспомогательных средств разработки
Совместно с Visual Studio использовались такие инструменты как ReSharper и dotMemory.
ReSharper (R#) - дополнение (плагин), разработанное компанией JetBrains для повышения продуктивности работы в Microsoft Visual Studio.
Проводит статический анализ кода (поиск ошибок в коде до компиляции) в масштабе всего решения, предусматривает дополнительные средства автозаполнения, навигации, поиска, подсветки синтаксиса, форматирования, оптимизации и генерации кода, предоставляет 40 автоматизированных рефакторингов, упрощает юнит-тестирование в средах MSTest и NUnit и др. Поддерживает языки программирования C#, C++, JavaScript, TypeScript и VB. NET, а также предоставляет средства для работы с ASP. NET, ASP. NET MVC, XML, XAML, HTML, CSS, сценариями сборки NAnt и MSBuild. [7]
dotMemory - это профилировщик памяти для. NET-приложений, позволяющий оптимизировать использование памяти, находить и устранять утечки памяти.
dotMemory позволяет:
Найти объекты, которые не были должным образом утилизированы, тем самым предотвратив утечки памяти.
Провести анализ использования памяти с помощью нескольких видов представления данных, в зависимости от конкретного случая.
Отследить присутствие объектов, которые потребляют большое количество памяти, а также сравнить любые два состояния памяти во время работы приложения.
Выявить загрузку ненужных объектов в память путем формирования снимков (дампов) памяти во время выполнения программы.
Сравнить состояния памяти в начале и конце некоторого временного интервала. [8]
ХАРАКТЕРИСТИКА ОБЪЕКТА АВТОМАТИЗАЦИИ
Государственное бюджетное учреждение здравоохранения города Москвы «Бюро судебно-медицинской экспертизы Департамента здравоохранения города Москвы» состоит из следующих подразделений:
Танатологические отделения №№1-13;
Отдел по перевозке тел умерших (погибших) ;
Судебно-гистологический отдел;
Биохимическое отделение;
Отделение биологических и молекулярно-генетических исследований;
Отделение общих химических методов исследования;
Зональная спектральная лаборатория;
Медико-криминалистическое отделение;
Отделение газохроматографических методов исследований;
Отдел экспертизы потерпевших, обвиняемых и других лиц;
Отдел комиссионных судебно-медицинских экспертиз;
Трупохранилище;
Количество пользователей системы - 425.
РАЗРАБОТКА СИСТЕМЫ
Архитектура системы
При разработке средних и сложных проектов важно заложить правильную архитектуру, т. к. от этого зависит вся дальнейшая работа. Проект с плохой архитектурой будет требовать больше сил и времени разработчика на создание нового функционала или поиск решения ошибки. Такой проект может использовать дополнительные инструменты, которые усложнят понимание работы системы.
Система будет состоять из нескольких проектов.
Domain (проект 1)
Начнем разработку с создания Domain Layer (доменный слой). Доменный слой содержит все бизнес - сущности системы. Бизнес - сущность (Entity) описывает таблицу БД и представляет собой класс с публичными свойствами - полями таблицы. Помимо описания полей класс содержит бизнес логику, связанную с этой сущностью.
Ниже приведен листинг сущности «Material».
using System;
using CorpseAccount. CommonTypes. Enums;
using CorpseAccount. Infrastructure. Domain;
namespace CorpseAccount. Domain. Entities
{
/// <summary>
/// Информация о материале
/// </summary>
public class Material: Entity
{
/// <summary>
/// УКТ, которой принадлежит файл
/// </summary>
public virtual AccountCorpseCard Card { get; set; }
/// <summary>
/// Категория файла
/// </summary>
public virtual MaterialCategory Category { get; set; }
/// <summary>
/// Бинарный массив, представляющий файл.
/// </summary>
public virtual MaterialData Data { get; set; }
/// <summary>
/// Расширение
/// Пример:. exe
/// </summary>
public virtual string Extension { get; set; }
/// <summary>
/// Имя файла
/// Пример: run. exe
/// </summary>
public virtual string FileName { get; set; }
/// <summary>
/// Определяет, помечен ли файл на удаление
/// </summary>
public virtual bool IsDeleted { get; set; }
/// <summary>
/// MIME-тип файла
/// </summary>
public virtual string MimeType { get; set; }
/// <summary>
/// Дата и время загрузки материала
/// </summary>
public virtual DateTime UploadDateTime { get; set; }
/// <summary>
/// Видимое имя файла
/// Пример: run
/// </summary>
public virtual string VisibleName { get; set; }
}
}
DTO (проект 2)
Data Transfer Object - один из шаблонов проектирования, используется для передачи данных между подсистемами приложения.
На каждую бизнес сущность создается по одному DTO. Каждая DTO содержит только те поля, которые мы хотим передать между приложением. В отличии от бизнес - сущности DTO не содержит логику.
Ниже приведен листинг DTO «MaterialDto»:
using System;
using System. Runtime. Serialization;
using CorpseAccount. CommonTypes. Enums;
namespace CorpseAccount. Dto
{
/// <summary>
/// Информация о материале
/// </summary>
[Serializable]
[DataContract]
public class MaterialDto: EntityDto
{
/// <summary>
/// Категория файла
/// </summary>
[DataMember]
public virtual MaterialCategory Category { get; set; }
/// <summary>
/// Расширение
/// </summary>
[DataMember]
public virtual string Extension { get; set; }
/// <summary>
/// Имя файла
/// </summary>
[DataMember]
public virtual string FileName { get; set; }
/// <summary>
/// Определяет, помечен ли файл на удаление
/// </summary>
[DataMember]
public virtual bool IsDeleted { get; set; }
/// <summary>
/// MIME-тип файла
/// </summary>
[DataMember]
public virtual string MimeType { get; set; }
/// <summary>
/// Видимое имя файла
/// </summary>
[DataMember]
public virtual string VisibleName { get; set; }
}
}
DAL (проект 3)
Слой доступа к данным (Data Access Layer - DAL) - это слой компьютерной программы, который предоставляет упрощенный доступ к данным, хранимым в постоянном хранилище, таком как реляционная база данных.
Задача этого проекта связать бизнес - сущность с конкретной таблицей в БД с помощью специальных классов - «маппингов».
Класс содержит конструктор, где для каждого поля таблицы указывается свойство сущности, а также ссылки и внешние ключи.
Ниже приведен пример «маппинга» «MaterialMap»:
using CorpseAccount. Dal. Extentions;
using CorpseAccount. Domain. Entities;
using FluentNHibernate. Mapping;
namespace CorpseAccount. Dal. Maps
{
internal class MaterialMap: ClassMap<Material>
{
public MaterialMap ()
{
Table («Materials») ;
Id (p => p. Id). GuidForeignPrimaryKey (nameof (Material. Data)) ;
Map (context => context. VisibleName). Column («VisibleName») ;
Map (context => context. Extension). Column («Extension») ;
Map (context => context. FileName). Column («FileName») ;
Map (context => context. MimeType). Column («MimeType») ;
Map (context => context. IsDeleted). Column («IsDeleted») ;
Map (context => context. Category). Column («Category»). CustomType<int> () ;
References (card => card. Card, «CardId»). Nullable () ;
HasOne (x => x. Data)
. Constrained ()
. ForeignKey () ;
}
}
}
Помимо «маппингов» в проекте находится реализация репозитория, миграции.
Репозиторий - паттерн, используемый при работе с данными. Он позволяет абстрагироваться от конкретных подключений к источникам данных, с которыми работает программа, и является промежуточным звеном между классами, непосредственно взаимодействующими с данными, и остальной программой.
Класс репозитория реализует методы для манипулирования данными - Get, Update, Create, Delete.
Common (проект 4)
По мере разработки мы будем использовать интерфейсы, константы, вспомогательные классы - хелперы, которые используются в других проектах. Вынесем их в отдельный проект.
Логически разбитые константы заключаются в Enums - перечисления. Такой подход позволяет облегчить работу тем, что можно быстро изменить значение константы только в одном месте и не искать где она используется.
Пример такого перечисления приведен ниже:
using System;
using System. ComponentModel;
namespace CorpseAccount. CommonTypes. Enums
{
/// <summary>
/// Список типов запросов на выдачу документов
/// </summary>
[Serializable]
public enum ActConclusionType
{
[Description («Акт») ]
Act = 0,
[Description («Заключение») ]
Conclusion = 1
}
}
Теперь, когда у нас есть все необходимые данные перейдем к реализации серверной части. Сервер будет состоять из WCF - сервисов, позволяющих передавать данные между клиентом и сервером.
Windows Communication Foundation - программный фреймворк, используемый для обмена данными между приложениями, входящий в состав. NET Framework. До своего выпуска в декабре 2006 года в составе. NET Framework 3. 0, WCF был известен под кодовым именем Indigo.
WCF делает возможным построение безопасных и надёжных транзакционных систем через упрощённую унифицированную программную модель межплатформенного взаимодействия. Комбинируя функциональность существующих технологий. NET по разработке распределённых приложений (ASP. NET XML Web Services - ASMX, WSE 3. 0,. NET Remoting,. NET Enterprise Services и System. Messaging), WCF предоставляет единую инфраструктуру разработки, при умелом применении повышающую производительность и снижающую затраты на создание безопасных, надёжных и транзакционных Web-служб нового поколения. Заложенные в неё принципы интероперабельности позволяют организовать работу с другими платформами, для чего используются технологии взаимодействия платформ, например, WSIT, разрабатываемые на базе открытого исходного кода. [9]
WCF - сервис состоит из интерфейса и его реализации. Пример интерфейса и реализации приведен ниже.
Интерфейс:
using System;
using System. Collections. Generic;
using System. ServiceModel;
using System. Threading. Tasks;
using CorpseAccount. Dto;
namespace CorpseAccount. Application. Common. Services
{
[ServiceContract]
public interface IAdditionalResearchDataService
{
/// <summary>
/// Возвращает список анализов по Id.
/// </summary>
/// <returns></returns>
[OperationContract]
Task<IEnumerable<AdditionalResearchDataDto>> GetAnalysisAsync (Guid id) ;
/// <summary>
/// Возвращает список документов по Id.
/// </summary>
/// <returns></returns>
[OperationContract]
Task<IEnumerable<AdditionalResearchDataDto>> GetDocumentsAsync (Guid id) ;
}
}
Реализация:
using System;
using System. Collections. Generic;
using System. Threading. Tasks;
using CorpseAccount. Application. Common. Extensions;
using CorpseAccount. Application. Common. Services;
using CorpseAccount. Application. FetchStrategy;
using CorpseAccount. Application. Specifications. DirectionStudy;
using CorpseAccount. Application. Specifications. RequestAdditionalDocuments;
using CorpseAccount. Domain. Entities;
using CorpseAccount. Dto;
using CorpseAccount. Infrastructure. Domain;
using CorpseAccount. Infrastructure. Factory;
namespace CorpseAccount. Application. Services
{
public class AdditionalResearchDataService: ServiceBase, IAdditionalResearchDataService
{
private readonly IRepository<DirectionStudy> _directionStudy;
private readonly IUnitOfWorkFactory _factory;
private readonly IRepository<RequestAdditionalDocuments> _requestDocuments;
public AdditionalResearchDataService (IUnitOfWorkFactory factory,
IRepository<DirectionStudy> directionStudy, IRepository<RequestAdditionalDocuments> requestAdditionalDocuments)
{
_factory = factory;
_directionStudy = directionStudy;
_requestDocuments = requestAdditionalDocuments;
}
public async Task<IEnumerable<AdditionalResearchDataDto>> GetAnalysisAsync (Guid id)
{
return await InvokeAsyncWithErrorHandler (() =>
{
using (_factory. Create ())
{
var strategy = new DirectionStudyBasicStrategy () ;
var documents = _directionStudy. FindAll (new HasDirectionStudyByCardId (id), strategy) ;
var map = documents. MapEachTo<AdditionalResearchDataDto> () ;
return map;
}
}) ;
}
public async Task<IEnumerable<AdditionalResearchDataDto>> GetDocumentsAsync (Guid id)
{
return await InvokeAsyncWithErrorHandler (() =>
{
using (_factory. Create ())
{
var strategy = new RequestAdditionalDocumentsBasicStrategy () ;
var documents = _requestDocuments. FindAll (new HasRequestAdditionalDocsByCardId (id), strategy) ;
var map = documents. MapEachTo<AdditionalResearchDataDto> () ;
return map;
}
}) ;
}
}
}
После создания сервисов остается создать консольное приложение, которое осуществит их запуск и зарегистрирует необходимые зависимости. На этом разработку серверной части можно считать завершенной.
Для размещения серверной части потребуется несколько физических серверов. Их список с характеристиками и назначением представлен в таблице 2.
Таблица 2 - Сервера Системы
|
Сервер |
Характеристики |
Описание |
Протоколы и режим обмена информацией |
|
|
Центральный сервер СУБД |
2 х Intel Xeon E5, 16 Гб RAM, 300 ГБ HDD MS Windows 2008 Server, PostgreSQL 9 |
Головной сервер баз данных, предназначенный для хранения всей информации, содержащейся в Системе. Сервер интеграции с АСУ «Транспортировка». |
Обмен с локальными серверами ТО осуществляется по протоколу TCP/IP посредством прямых запросов в Базу Данных. Обмен с АСУ «Транспортировка» посредством запроса к методам WebService обоих систем. |
|
|
Локальные сервера СУБД и приложения |
2 х Intel Xeon E5, 16 Гб RAM, 300 ГБ HDD MS Windows 2008 Server, PostgreSQL 9, сервер КАСУ БСМЭ |
Локальные сервера баз данных, расположенные на территории ТО. Предназначены для: хранения информации об объектах учета, принадлежащих ТО, обмена информации с головным сервером СУБД, передачи информации на АРМ КАСУ БСМЭ. |
Обмен с головным сервером осуществляется в режиме реального времени по протоколу TCP/IP посредством прямых запросов в СУБД. Обмен данными с АРМ осуществляется по протоколу TCP/IP посредством обращений клиентов к WebService'ам сервера. Обмен с АСУ Транспортировка осуществляется посредством обращения к WebService'у системы. |
|
|
АРМ КАСУ БСМЭ |
Intel Pentium >= 2GHz 1 GB RAM 10 GB HDD Windows 7 Клиент КАСУ БСМЭ |
Предназначен для работы пользователей с Системой. |
Обмен осуществляется только с локальным сервером СУБД и приложений по протоколу TCP/IP посредством обращения к WebService'ам сервера КАСУ БСМЭ |
|
|
Центральная АРМ КАСУ БСМЭ |
Intel Pentium >= 2GHz 1 GB RAM 10 GB HDD Windows 7 Клиент КАСУ БСМЭ |
Предназначена для работы пользователей с Системой. |
Обмен осуществляется с головным сервером по протоколу TCP/IP посредством обращения к WebService'ам сервера. |
|
|
АРМ Секционных |
Windows СЕ Клиент КАСУ БСМЭ |
Предназначена для работы экспертов и лаборантов в секционных |
Обмен осуществляется с головным сервером по протоколу TCP/IP посредством обращения к WebService'ам сервера. |
Архитектура системы представлена на рисунке №1.
Рисунок 1 - Архитектура системы
Проектирование и разработка базы данных
В базе данных будут храниться все данные связанные с организацией работы в отделениях. Так как данных много разобьем их логически по таблицам.
Рассмотрим основные таблицы.
Работа в бюро ведется в нескольких танатологических отделениях, соответственно для каждого отделения свои данные.
Создадим таблицу для хранения информации по ТО, структура таблицы приведена в таблице 3.
Таблица 3 - Структура таблицы «Танатологические отделения»
|
Наименование |
Комментарий |
Тип |
|
|
DepartmentId |
Идентификатор |
UUID |
|
|
Department |
Название (номер) ТО |
VARCHAR (128) |
|
|
Address |
Адрес ТО |
VARCHAR (255) |
В каждом ТО работают сотрудники заведем для них отдельную таблицу, структура приведена в таблице 4.
Таблица 4 - Структура таблица «Пользователи»
|
Наименование |
Комментарий |
Тип |
|
|
UserId |
Идентификатор |
UUID |
|
|
FullName |
ФИО |
VARCHAR (255) |
|
|
PositionId |
Должность, ссылка на справочник «Positions» |
UUID |
|
|
DepartmentId |
ТО, ссылка на справочник «Departments» |
UUID |
Далее, создадим таблицу, в которой будут содержаться основные данные УКТ, структура описана в таблице 5.
Таблица 5 - Структура таблицы «УКТ»
|
Наименование |
Комментарий |
Тип |
|
|
BodyId |
Идентификатор |
UUID |
|
|
SocialGroupId |
Социальная группа, ссылка на справочник «SocialGroups» |
UUID |
|
|
PlaceId |
Откуда поступил, ссылка на справочник «PlacesOfOrigin» |
UUID |
|
|
DistrictId |
Округ, ссылка на справочник «Districts» |
UUID |
|
|
ECId |
Основание производства экспертизы, ссылка на справочник «ExminationCauses» |
UUID |
|
|
ExpertID |
Ответственный эксперт, ссылка на справочник «Users» |
UUID |
|
|
DepartmentId |
ТО, ссылка на справочник «Departments» |
UUID |
|
|
RegistorId |
Регистратор, ссылка на справочник «Users» |
UUID |
|
|
Наименование |
Комментарий |
Тип |
|
|
StateId |
Состояние УКТ, ссылка на справочник «BodyCardStates» |
UUID |
|
|
OrderId |
Номер наряда, ссылка на справочник «Orders» |
UUID |
|
|
EditorId |
Пользователь, изменивший УКТ, ссылка на справочник «Users» |
UUID |
|
|
Gender |
Возраст |
NUMERIC |
|
|
PlaceOfLiving |
Место жительства, ID значения в списке |
UUID |
|
|
FullName |
ФИО |
TEXT |
|
|
DateOfBirth |
Дата рождения |
DATE |
|
|
Age |
Возраст |
NUMERIC |
|
|
Address |
Адрес места жительства |
TEXT |
|
|
Relationship |
Семейное положение, ID значения в списке |
UUID |
|
|
Education |
Образование, ID значения в списке |
UUID |
|
|
DateOfDelivery |
Дата поступления |
DATE |
|
|
OP |
О/П |
VARCHAR (64) |
|
|
StreetFrom |
Улица поступления |
VARCHAR (255) |
|
|
BuildingNumber |
Номер дома |
VARCHAR (32) |
|
|
Korpus |
Корпус |
VARCHAR (8) |
|
|
FlatNumber |
Квартира |
VARCHAR (12) |
|
|
DescriptionOfPlace |
Описание места обнаружения |
Text |
|
|
RegistrationNumber |
Регистрационный номер |
VARCHAR (128) |
|
|
Version |
Номер версии УКТ |
DECIMAL |
|
|
CurrentVersion |
Признак текущей версии |
BOOL |
Помимо основных данных для каждого трупа есть карта судебно-медицинской экспертизы (таблица 6), акты и заключения (таблица 7), вскрытия (таблица 8), обстоятельства (таблица 9), словесные портреты (таблица 10), клинические диагнозы (таблица 11).
Таблица 6 - Структура таблицы «Карты СМЭ»
|
Наименование |
Комментарий |
Тип |
|
|
FMECardId |
Идентификатор |
UUID |
|
|
AutopsyTypeId |
Вид вскрытия, ссылка на справочник «AutopsyTypes» |
UUID |
|
|
DeathCauseId |
Причина смерти, ссылка на справочник «DeathCauses» |
UUID |
|
|
DeathCategoryId |
Категория смерти, ссылка на справочник «Категории смерти» |
UUID |
|
|
IlnessId |
Заболевание, ссылка на справочник «Ilnesses» |
UUID |
|
|
DrugId |
Наркотик, ссылка на справочник «Drugs» |
UUID |
|
|
MedicalDefectId |
Дефекты оказания медицинской помощи, ссылка на справочник «MedicalDefects» |
UUID |
|
|
BodyId |
Идентификатор УКТ |
UUID |
|
|
DeathDate |
Дата смерти |
DATE |
|
|
DeathType |
Вид смерти |
NUMERIC |
|
|
HIV |
ВИЧ |
BOOL |
|
|
ImmunoblotNuber |
Номер иммуноблота |
VARCHAR (64) |
|
|
ImmunoblotDate |
Дата иммуноблота |
DATE |
|
|
Tuberculosis |
Туберкулез |
BOOL |
|
|
Alcohol |
Признак присутствия алкоголя в анализе крови |
BOOL |
|
|
UrinePercent |
% алкоголя в моче |
NUMERIC |
|
|
BloodPercent |
% алкоголя в крови |
NUMERIC |
|
|
Drugs |
Признак присутствия наркотиков в анализе крови |
BOOL |
|
|
DiagnoseCompare |
Признак сличения диагнозов |
BOOL |
|
|
DateOfResearchFinish |
Дата окончания исследований/экспертизы |
DATE |
|
|
DestructionDescribe |
Характер повреждений |
TEXT |
|
|
Version |
Версия раздела УКТ |
DECIMAL |
|
|
CurrentVersion |
Признак текущей версии |
BOOL |
Таблица 7 - Структура таблицы «Акты»
|
Наименование |
Комментарий |
Тип |
|
|
ActId |
Идентификатор |
UUID |
|
|
BodyId |
Идентификатор УКТ |
UUID |
|
|
LawOrganisationID |
Правоохранительные органы, ссылка на справочник «LawOrganisations» |
UUID |
Продолжение таблицы 7
|
Наименование |
Комментарий |
Тип |
|
|
ActType |
Тип выданного заключения, ID значения в списке |
UUID |
|
|
ResearchDate |
Дата сдачи экспертизы |
DATE |
|
|
Permission |
Разрешение |
BOOL |
|
|
Position |
Должность адресата |
VARCHAR (255) |
|
|
LawOrganisationName |
Наименование правоохранительного органа |
VARCHAR (255) |
|
|
FIO |
ФИО кому выдано |
TEXT |
|
|
Document |
Тип документа, ID значения в списке |
UUID |
|
|
DocumentNumber |
Номер документа |
VARCHAR (32) |
|
|
DocumentDate |
Дата выдачи документа |
DATE |
|
|
Application |
Приложения к акту/заключению |
TEXT |
|
|
Version |
Версия раздела УКТ |
DECIMAL |
|
|
CurrentVersion |
Признак текущей версии |
BOOL |
Таблица 8 - Структура таблицы «Вскрытия»
|
Наименование |
Комментарий |
Тип |
|
|
AutopsyId |
Идентификатор |
UUID |
|
|
ExpertId |
Эксперт, проводивший вскрытие, ссылка на справочник «Users» |
UUID |
|
|
LaborantId |
Лаборант, проводивший вскрытие, ссылка на справочник «Users» |
UUID |
|
|
DeathCauseId |
Причина смерти, ссылка на справочник «DeathCauses» |
UUID |
|
|
BodyId |
Идентификатор УКТ |
UUID |
|
|
Illness |
Болезнь или состояние, непосредственно приведшее к смерти |
TEXT |
|
|
Pathology |
Патологическое состояние, которое привело к возникновению вышеуказанной причины |
TEXT |
|
|
OriginalDeathCause |
Первоначальная причина смерти |
TEXT |
|
|
ExternalCause |
Внешняя причина при травмах и отправлениях |
TEXT |
|
|
AdditionalInrformation |
Прочие важные состояния, способствующие смерти |
TEXT |
Продолжение таблицы 8
|
Наименование |
Комментарий |
Тип |
|
|
Issued |
Что оформлено, ИД значения списка (Акт, Заключение, Акт+Заключение) |
NUMERIC |
|
|
Version |
Версия записи |
DECIMAL |
|
|
CurrentVersion |
Признак текущей версии |
BOOL |
Таблица 9 - Структура таблицы «Обстоятельства»
|
Наименование |
Комментарий |
Тип |
|
|
ConditionId |
Идентификатор |
UUID |
|
|
BodyId |
Идентификатор УКТ |
UUID |
|
|
Condition |
Обстоятельство |
TEXT |
|
|
Version |
Номер версии УКТ |
DECIMAL |
|
|
CurrentVersion |
Признак текущей версии |
BOOL |
Таблица 10 - Структура таблицы «Словесные портреты»
|
Наименование |
Комментарий |
Тип |
|
|
PorttraitId |
Идентификатор |
UUID |
|
|
BodyId |
Идентификатор УКТ |
UUID |
|
|
Porttrait |
Словесный портрет |
TEXT |
|
|
Version |
Номер версии УКТ |
DECIMAL |
|
|
CurrentVersion |
Признак текущей версии |
BOOL |
Таблица 11 - Структура таблицы «Клинические диагнозы»
|
Наименование |
Комментарий |
Тип |
|
|
CDiagnoseId |
Идентификатор |
UUID |
|
|
BodyId |
Идентификатор УКТ |
UUID |
|
|
CDiagnose |
Клинический диагноз |
TEXT |
|
|
Version |
Номер версии УКТ |
DECIMAL |
|
|
CurrentVersion |
Признак текущей версии |
BOOL |
Последняя таблица, которую можно отнести к основным - выдача тел. Структура описана в таблице 12.
Таблица 12 - Структура таблицы «Выдача тел»
|
Наименование |
Комментарий |
Тип |
|
|
ExtraditionId |
Идентификатор |
UUID |
|
|
RitualOrganizationId |
Ритуальная организация, ссылка на справочник «RitualOrganisations» |
UUID |
|
|
RegistryOfficeId |
ЗАГС, ссылка на справочник «RegistryOffices» |
UUID |
|
|
BodyId |
Идентификатор УКТ |
UUID |
|
|
MedicalConclusionTempNumber |
Предварительное медецинское заключение |
VARCHAR (128) |
|
|
MedicalConclusionNumber |
Окончательное медицинское заключение |
VARCHAR (128) |
|
|
MedicalConclusionTempNumber2 |
Предварительное медицинское заключение, выданное взамен предыдущего |
VARCHAR (128) |
|
|
MedicalConclusionNumber2 |
Окончательное медицинское заключение, выданное взамен предыдущего |
VARCHAR (128) |
|
|
RecipientFIO |
ФИО получателя |
TEXT |
|
|
RecipientType |
Кому выдано, ID значения в списке |
UUID |
|
|
PlaceOfLiving |
Место прописки, ID значения в списке |
UUID |
|
|
Address |
Адрес прописки |
TEXT |
|
|
PhoneNumber |
Номер телефона |
VARCHAR (32) |
|
|
MedicalService |
Необходимость медицинских услуг |
BOOL |
|
|
AdditionalRituals |
Ритуальные принадлежности |
TEXT |
|
|
HelardicCertNumber |
Номер гербового свидетельства |
VARCHAR (32) |
|
|
ActNumber |
Номер актовой записи |
VARCHAR (32) |
|
|
CertDate |
Дата выдачи гербового свидетельства |
DATE |
|
|
HealthServiceType |
Вид здравоохранения, ID значения в списке |
UUID |
|
|
Version |
Версия раздула |
DECIMAL |
|
|
CurrentVersion |
Признак текущей версии |
BOOL |
Любое изменение структуры базы данных осуществляется с помощью миграций.
Миграции - инструмент, позволяющий обновить структуру БД до нового состояния или же наоборот - откатить до более раннего.
В нашем случае миграция представляет собой класс, содержащий 2 метода - Up и Down.
Пример простой миграции - создание таблицы: метод Up - содержит код, создающий таблицу, а Down - метод, противоположный методу Up - удаляет её.
Миграции особенно удобны при разработке в команде, когда нескольким участникам необходимо изменить структуру БД.
Ещё одна особенность разрабатываемой БД заключается в типе первичного ключа. Обычно первичным ключом служит поле типа integer с автоинкрементом. В нашем случае используется специальный тип GUID.
GUID - уникальный 128-битный идентификатор. Его главная особенность - уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов. Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3, 4028Ч1038), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала.
GUID записывается в виде строки из тридцати двух шестнадцатеричных цифр, разбитой на группы дефисами и опционально окружённой фигурными скобками, например,
{6F9619FF-8B86-D011-B42D-00CF4FC964FF}
Стоит отметить, что PostgreSQL не поддерживает данный тип по - умолчанию. Поэтому, для его работы необходимо расширение «uuid-ossp».
Полная структура базы данных представлена в приложении 1.
Выбор шаблона проектирования
Шаблоны проектирования - это оптимизированные, универсальные решения для проблем программирования, с которыми мы сталкиваемся каждый день. Шаблон не является классом или библиотекой, которые мы можем просто включить в нашу систему - это гораздо более широкое понятие.
Это архитектура, которая должна быть применена в соответствующем случае. Это и не отдельный язык программирования. Хороший шаблон должен быть совместим с большинством (если не со всеми) языков программирования - в зависимости от возможностей самого языка.
Но самое главное - любой шаблон проектирования может стать палкой о двух концах: если он будет применен не по месту, это может обернуться катастрофой и создать вам много проблем в последующем. В то же время, реализованный в нужном месте, в нужное время, он может стать для вас настоящим спасителем.
Есть три основных вида шаблонов проектирования:
Структурные
Структурные шаблоны в целом определяют взаимодействия между объектами, что облегчает их совместное применение.
Порождающие
Порождающие шаблоны обеспечивают механизмы инстанцирования, с помощью чего оптимизируется процесс создания объектов под конкретные ситуации.
поведенческие
Поведенческие шаблоны используются для обеспечения связей между объектами и делают их более простыми и гибкими. Что обеспечивает оптимизацию коммуникаций между ними. [10]
Рассмотрим 3 паттерна - MVC, MVP, MVVM.
MVC
Концепция паттерна (шаблона) MVC (model - view - controller) предполагает разделение приложения на три компонента:
Контроллер (controller) представляет класс, обеспечивающий связь между пользователем и системой, представлением и хранилищем данных. Он получает вводимые пользователем данные и обрабатывает их. И в зависимости от результатов обработки отправляет пользователю определенный вывод, например, в виде представления.
Представление (view) - это собственно визуальная часть или пользовательский интерфейс приложения.
Модель (model) представляет класс, описывающий логику используемых данных.
Рисунок 2 - Структура паттерна MVC
В этой схеме модель является независимым компонентом - любые изменения контроллера или представления не затрагивают модель. Контроллер и представление являются относительно независимыми компонентами, и нередко их можно изменять независимо друг от друга.
Благодаря этому реализуется концепция разделение ответственности, в связи с чем легче построить работу над отдельными компонентами. Кроме того, вследствие этого приложение обладает лучшей тестируемостью. И если нам, допустим, важна клиентская часть, то мы можем тестировать представление независимо от контроллера. Либо мы можем сосредоточиться на серверной части и тестировать контроллер.
Назначение паттерна
Основная цель применения этой концепции состоит в отделении бизнес-логики (модели) от её визуализации (представления, вида). За счёт такого разделения повышается возможность повторного использования кода. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения. В частности, выполняются следующие задачи:
К одной модели можно присоединить несколько видов, не затрагивая при этом реализацию модели.
Не затрагивая реализацию видов, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных) - для этого достаточно использовать другой контроллер.
Ряд разработчиков специализируется только в одной из областей: либо разрабатывают графический интерфейс, либо разрабатывают бизнес-логику. Поэтому возможно добиться того, что программисты, занимающиеся разработкой бизнес-логики (модели), вообще не будут осведомлены о том, какое представление будет использоваться.
MVP
Model - View - Presenter - шаблон проектирования пользовательского интерфейса, производный от MVC, который используется в основном для построения пользовательского интерфейса.
Шаблон был разработан для облегчения автоматического модульного тестирования и улучшения разделения ответственности в презентационной логике (отделения логики от отображения).
Рисунок 3 - Структура паттерна MVP
Как видно на рис. 2, Presenter занял место контроллера и отвечает за перемещение данных, введенных пользователем, а также за обновление представления при изменениях, которые происходят в модели. Presenter общается с представлением через интерфейс, который позволяет увеличить тестируемость, так как модель может быть заменена на специальный макет для модульных тестов.
MVVM
Model - View - ViewModel - шаблон проектирования архитектуры приложения. Представлен в 2005 году Джоном Госсманом (John Gossman) как модификация шаблона Presentation Model. Ориентирован на современные платформы разработки, такие как Windows Presentation Foundation, Silverlight.
Рисунок 4 - Структура паттерна MVVM
Шаблон MVVM делится на три части:
Модель (англ. Model) (так же, как в классической MVC) представляет собой логику работы с данными и описание фундаментальных данных, необходимых для работы приложения.
Представление (англ. View) - графический интерфейс (окна, списки, кнопки и т. п.). Выступает подписчиком на событие изменения значений свойств или команд, предоставляемых Моделью Представления. В случае, если в Модели Представления изменилось какое-либо свойство, то она оповещает всех подписчиков об этом, и Представление, в свою очередь, запрашивает обновлённое значение свойства из Модели Представления. В случае, если пользователь воздействует на какой-либо элемент интерфейса, Представление вызывает соответствующую команду, предоставленную Моделью Представления.
Модель Представления (англ. ViewModel) - с одной стороны, абстракция Представления, а с другой - обёртка данных из Модели, подлежащие связыванию. То есть, она содержит Модель, преобразованную к Представлению, а также команды, которыми может пользоваться Представление, чтобы влиять на Модель.
Резюме
Реализация MVVM и MVP-паттернов, на первый взгляд, выглядит достаточно простой и схожей. Однако, для MVVM связывание представления с моделью представления осуществляется автоматически, а для MVP - необходимо всё делать вручную.
MVC имеет больше возможностей по управлению представлением.
Таблица 13 - Сравнительная таблица использования паттернов
|
MVC |
MVP |
MVVM |
||
|
Случаи использования |
Используется в ситуации, когда связь между представление и другими частями приложения невозможна |
Используется в ситуации, когда невозможно связывание данных (нельзя использовать Binding) |
Используется в ситуации, когда возможно связывание данных без необходимости ввода специальных интерфейсов представления (т. е. отсутствует необходимость реализовывать IView) |
|
|
Пример использования |
ASP. NET MVC |
Windows Forms |
WPF |
В качестве шаблона проектирования выбран MVVM. Решающими факторами стали:
При использовании MVVM снижается объем кода, необходимый для управления представлением
Двухсторонняя коммуникация с представлением
Легкость тестирования приложения
Проектирование и разработка интерфейса
В предыдущем разделе мы выбрали паттерн MVVM для разработки клиентской части. Данный паттерн хорошо сочетается с технологией WPF.
Windows Presentation Foundation (WPF) - это платформа пользовательского интерфейса для создания клиентских приложений для настольных систем. Платформа разработки WPF поддерживает широкий набор компонентов для разработки приложений, включая модель приложения, ресурсы, элементы управления, графику, макет, привязки данных, документы и безопасность. Она является частью платформы. NET Framework, и если ранее вы создавали приложения в. NET Framework с помощью ASP. NET или Windows Forms, то должны быть знакомы с принципами программирования. WPF использует расширяемый язык разметки для приложений (XAML), чтобы предоставить декларативную модель для программирования приложений.
Самое первое, что увидит сотрудник, запустив клиент - форма авторизации. Поэтому начнем именно с неё. Эта форма достаточно предсказуема - на ней находится 2 поля для ввода имени и пароля, выпадающий список с выбором ТО и 2 кнопки - ОК, Отмена. Форма представлена на рисунке 5.
Рисунок 5 - Форма авторизации
Главный экран
После авторизации открывается главный экран (рисунок 6).
Рисунок 6 - Главное экран
Его можно разбить на несколько составляющих:
Верхнее меню
Позволяет перейти к шаблонам, отчетам, настройкам безопасности, настройкам ТО, справочникам. В зависимости от роли сотрудника он видит те или иные функции меню.
Рабочая область
В связи с тем, что в клиенте необходимо отобразить достаточно большое количество информации при проектировании интерфейса активно используются вкладки - они позволяют сгруппировать нужную информацию и сэкономить место.
Состоит из вкладок, каждая вкладка отображает список УКТ в соответствующем статусе. Список представляет собой таблицу с фильтрами по регистрационному номеру, номеру труппа, ФИО, дате доставки и т. д.
Ниже таблицы располагаются кнопки для перехода по страницам, отмены фильтра и обновления текущей страницы.
Как и в случае с верхним меню, каждая роль видит свой набор вкладок.
Строка состояния
Отображает краткие сведения об авторизованном сотруднике - его имя, роль, ТО, а также количество незарегистрированных карт.
Просмотр УКТ
Двойной клик в списке по УКТ открывает её в новом окне (рисунок 7).
Рисунок 7 - Учетная карточка трупа
Здесь отображается вся информация, связанная с трупом. Информация разбита по вкладкам. При открытии УКТ она доступна только для чтения. Сделано это для того, чтобы в одно и тоже время только один сотрудник имел возможность редактирования карты.
При редактировании каких - либо данных сотрудником важно знать, что он ввел верные данные, для этого используется проверка (валидация) полей. Если результат проверки не соответствует ожидаемому результату сотрудник не может сохранить изменения. При этом в подсказке к полю всегда описывается то, чего ждут от пользователя, пример валидации показан на рисунке 8.
Рисунок 8 - Проверка полей ввода
Помимо валидации есть такие поля, которые могут быть недоступны для редактирования по какому - то признаку (условию). Это может сэкономить время сотрудника от ввода данных.
Не будем подробно останавливаться на просмотре УКТ, т. к. там всё однотипно и перейдем к настройкам системы.
Настройки безопасности
Одной из главных функций при разработке является разграничение прав доступа между ролями. Настройки безопасности должны быть понятны и легко настраиваемы. Окно с конфигурацией прав представлено на рисунке 9.
Рисунок 9 - Настройки доступа для ролей
Окно разбито на 2 части. Слева список частей клиента, для которых можно настроить права. Вверху списка расположены 6 элементов с раскрывающимся списком. Название элементов соответствует названию вкладок на главном экране, а содержимое списка - элементам на вкладке.
Справа располагается матрица прав. Сверху матрицы указаны все роли в системе, слева - возможные варианты прав. Их всего 3:
Полный доступ - сотрудник может просматривать и редактировать элемент формы
Чтение - сотрудник может только просматривать элемент формы
Нет доступа - данный элемент скрыт с формы
Справочники
На многих формах используются выпадающие списки, большая часть из которых являются динамическими - сотрудник может добавлять/изменять/удалять значения в списке. Для этой цели были созданы справочники. Структура справочника показана в таблице 14.
Таблица 14 - Структура таблицы «Справочники»
|
Наименование |
Комментарий |
Тип |
|
|
Id |
Первичный ключ |
GUID |
|
|
Name |
Значение |
String |
|
|
Type |
Тип значения, например Вид вскрытия |
String |
|
|
IsDeleted |
Флаг, указывающий, что значение удалено |
Boolean |
Форма редактирования справочников представлена на рисунке 10.
Рисунок 10 - Управление справочниками
Окно разбито на 2 части - слева список справочников, справа их значения и форма редактирования. Форма состоит из поля ввода и 5 кнопок:
Очистить - очищает текстовое поле
Добавить - добавляет уникальное значение из текстового поля в БД
Изменить - позволяет изменить выделенное значение
Удалить - помечает выделенное значение как удаленное
Восстановить - восстанавливает удаленное значение
На рисунке 11 показан пример использования значений справочника.
Рисунок 11 - Выпадающий список со значениями из справочника
Справочники позволяют более гибко настроить систему без помощи разработчика.
ТРЕБОВАНИЯ К СИСТЕМЕ
Требования к структуре и функционированию системы
Перечень подсистем и их назначение
Архитектура системы должна строиться из следующих подсистем:
1. Серверная подсистема - сервер приложения, обеспечивающий прием и передачу информации в СУБД.
2. База данных - предназначена для хранения информации.
3. Клиентские приложения - предназначены для работы пользователей с данными, получаемыми и передаваемыми от сервера приложения. В системе должны быть предусмотрены следующие типы клиентских приложений:
3. 1. АРМ ТО КАСУ БСМЭ - представляет собой клиентское приложение для работы всех сотрудников ТО. Обеспечивает функционал всех бизнес-процессов, протекающих в ТО.
3. 2. Центральная АРМ КАСУ БСМЭ - представляет собой приложение для работы сотрудников Центрального офиса. Содержит частичный функционал АРМ КАСУ БСМЭ.
3. 3. АРМ Секционных - представляет собой приложение для работы экспертов и лаборантов в секционных. Ограничена только функционалом проведения наружного и внутреннего исследований.
Требования к способам и средствам связи для информационного обмена между компонентами системы
Система должна быть построена на клиент-серверной архитектуре, обмен данными между клиентом и сервером должен осуществляться по протоколу TCP/IP. Территориально удаленные ТО должны быть объединены в виртуальную локальную сеть посредством VPN. Все компьютеры, работающие с системой, должны входить в единый домен AD.
Требования к численности и квалификации персонала системы
Максимальное количество пользователей системы - 500 человек.
Для технического и системного сопровождения системы, выполнения функций по администрированию системы требуется создание группы технического сопровождения. Рекомендуемая численность сотрудников технической службы, требующихся для обслуживания системы, - 1 технический специалист (администратор).
Требования к надежности
Подобные документы
Перечень подсистем, их назначение и основные характеристики. Требования к режимам функционирования системы. Концептуальное, физическое и реляционное проектирование. Программно-информационное ядро базы. Интерфейс программы, требования к надежности.
курсовая работа [3,7 M], добавлен 14.04.2014Проектирование автоматизированных систем обработки информации и управления. Анализ структуры и деятельности предприятия, создание моделей "Как есть". Определение проблемных областей предприятия. Требования к структуре и функционированию системы.
курсовая работа [611,4 K], добавлен 29.12.2012Разработка элементов системы электронного документооборота бюро учета расчетов с рабочими и служащими ОАО "НасосМаш". Требования к автоматизированной информационной системе. Обеспечение логической целостности базы данных и определение размера премии.
курсовая работа [2,4 M], добавлен 28.04.2012Проектирование базы данных для автоматизированной системы "Склад". Разработка концептуальной модели (ER-диаграмма). Преобразование в реляционную модель и ее нормализация. Разработка запросов к базе данных на языке SQL. Скрипт для создания базы данных.
курсовая работа [161,8 K], добавлен 07.10.2013Современные базы данных и систем управления ими. Методы построения их приложений. Разработка СУБД на примере "Бюро находок", обеспечивающей пользователю возможности по пополнению, редактированию, просмотру и анализу базы данных. Реализация БД в MS Access.
курсовая работа [3,4 M], добавлен 19.06.2012Использование автоматизированных баз данных в деятельности бюро по найму - способ облегчения деятельности сотрудников и повышения качества обслуживания клиентов. Разработка пользовательского интерфейса главной кнопочной формы информационной системы.
курсовая работа [1,4 M], добавлен 25.04.2019Создание автоматизированной системы учета заказов и их выполнения в строительной фирме по ремонту квартир. Общие требования к информационной системе. Проектирование структуры базы данных. Построение ER-диаграммы. Реализация информационной системы.
курсовая работа [750,2 K], добавлен 24.03.2014Создание информационной системы для автоматизации проведения анкетирования среди студентов и преподавателей учебных заведений. Требования к структуре и функционированию системы, программному обеспечению. Проектирование логической модели базы данных.
курсовая работа [2,4 M], добавлен 08.03.2016Описание салона-магазина по предоставлению услуг оператора мобильной связи. Обоснование создания автоматизированной информационной системы "Оператор". Выбор программного обеспечения, проектирование реляционной базы данных. Описание основ интерфейса.
дипломная работа [1,9 M], добавлен 27.05.2015Иерархическая модель данных. Основные элементы сетевой модели данных. Требования заказчика. Разработка автоматизированной системы управления "Преподаватели". Описание этапов разработки. Установка связей между таблицами. Резервирование базы данных в SQL.
курсовая работа [1,3 M], добавлен 10.02.2014


