Н. 3. Елманова. C++Builder 3.0, архитектура "клиент/сервер" и Internet
ветствующие их служебным обязанностям права доступа к таблицам. Например, представляется разумным запретить медрегистратору и медстати-стику вносить изменения в таблицы со списком врачей, а кадровику вносить изменения в списки пациентов. Если исходить из того, что медстати-стиков, медрегистраторов и кадровиков может быть несколько, имеет смысл создать в базе данных соответствующие роли (если, конечно, создание ролей поддерживается выбранным сервером) и назначить каждому пользователю соответствующую роль.
Руководствуясь этими соображениями, создадим три роли в базе данных с соответствующими правами доступа к таблицам и три автоматизированных рабочих места для инспектора отдела кадров, медрегистратора и медстатистика, возложив на последнего также обязанность корректировать список диагнозов.
Первые два АРМ создать относительно несложно (одно из них предназначено для ввода данных в одну таблицу, другое - в две таблицы, связанные соотношением "один ко многим"). Для этой цели можно воспользоваться утилитой Database Form Wizard и затем внести небольшие изменения в сгенерированные формы и код, в частности для обеспечения возможности не использовать мышь при массовом вводе данных, а также для установки фокуса ввода в первое поле формы при создании новой записи (в обработчике события OnNewRecord соответствующего компонента TTable). Кроме того, следует исключить возможность ввода пользователем значения поля PROF_ID в список врачей - в этом случае значение этого поля генерируется автоматически в соответствии со значением в выбранной строке списка специальностей, что исключает попытки создания некорректной записи уже на уровне клиентского приложения (рис. 4.7, 4.8).
Автоматизированное рабочее место медстатистика в нашей версии информационной системы используется не только для ввода данных в таблицу статистических талонов, но и для ввода данных в три словарные таблицы -список'Диагнозов, целей и статусов посещения. Поэтому выполним его в виде многостраничного блокнота. Для ввода словарных таблиц используем компоненты DBGrid (рис. 4.9), а на интерфейсе ввода данных в таблицу статистических талонов остановимся отдельно.
70
О проектировании данных
If j Ввод данных о пациентах
НН+  -  +•
С*      Следующий...
Выход
Код пациента  ФИО
1 Иванов Петр Иванович 2J
3 Петров Петр Петрович
4 Сидоров Сидор Сияорович
Код пациента
_J LJ
ФИО   [Иванов Иван Иванович Дата рождения ;|01.12.55
Адрес   ]ул.Бабы Яги, 25, кв.З Пол
{•'^мчжской       ^~ женский
Группа инвалидности
Рис. 4.7. Автоматизированное рабочее место медрегистратора р^^^^^^^^^^^^^^^^^^^^^^^^^^^^НННВНЩ^Н^^^^^^^^^^^сз!^ i|i;|'^j>|^|:!fp||l||S|.:-'j>c|c"| Специальности
:р
к   ч   И и   +   -   ж
J Сведения о врачах
ФИО                                          -:•            :-;-•              :-:-::,         ''     ,	А
^ Бессмертный Кощей Иванович	
Горыиыч Змей Змеевич	J
Яга Б аба Ивановна	d
Таб.номер.;:; Ставка / Категория •фамилия   [Бессмертный Кощей Иванович
Следующий...
Выкод
Рис. 4.8. Автоматизированное рабочее место инспектора отдела кадров
71