Выписываем все сущности предметной области в список:
- пациент,
- запись к врачу,
- прием у врача,
- врач–специалист,
- специальность врача,
- диагноз,
- тип болезни,
- больничный лист (Б/Л),
- открытие Б/Л,
- закрытие Б/Л,
- поликлиника,
- больница,
- отделение больницы,
- направление в больницу,
- поступление в больницу,
- выписка из больницы.
Следующим шагом определяем, какие из этих сущностей зависят от времени, а какие–нет. Те сущности, что не зависят от времени, назовем сущностями–справочниками, а зависящие от времени — сущностями–событиями.
Список сущностей–справочников:
- пациент,
- врач–специалист,
- специальность врача,
- диагноз,
- тип болезни,
- больничный лист (Б/Л),
- поликлиника, больница,
- отделение больницы.
Список сущностей–событий:
- запись к врачу,
- прием у врача,
- открытие Б/Л,
- закрытие Б/Л,
- направление в больницу,
- поступление в больницу,
- выписка из больницы
Для каждого события выявляем его «участников» из числа справочников и строим диаграмму классов. Для этого отвечаем на вопрос: «информацию о каких справочниках должно «знать» событие?
Запись к врачу. Событие связано с (1) пациентом, который записывается, (2) – с врачом и с поликлиникой
Рисунок. Событие «Запись к врачу».
В дальнейшем эта диаграмма будет нуждаться в реорганизации, т.к. врач связан с поликлиникой и событие «запись к врачу» будет связано с поликлиникой через врача.
Связь врача с поликлиникой.
Прием у врача. Событие связано с (1) пациентом, (2) – с врачом, (3) – с диагнозом, на приеме может быть выписан/продлен/закрыт больничный лист, т.е. (4) – с больничным листом —
Рисунок. Событие «Прием у врача».
События открыть/закрыть больничный лист связаны с событием «Прием у врача». На приеме врач может принять решение о госпитализации пациента, т.е. произойдет событие «направление в больницу»:
Поступление в больницу. Событие связано с пациентом, с отделением больницы и с диагнозом
Рисунок. Событие «Поступление в больницу».
Выписка из больницы. Событие связывается с «поступлением в больницу» и через него связывается с пациентом, диагнозом и отделением.
Если перенести сущности в одну диаграмму, получится такая схема:
Реструктурируем связи. Снимаем связь «запись к врачу» — «поликлиника», т.к. она идентифицируется через врача–специалиста. «Запись к врачу» удалим, будем считать её как запись «прием у врача», у которой отсутствует время приема. Таким образом, «прием у врача» имеет атрибут «состояние» с двумя значениями: «запись» (приема еще не было) и «прием» (прием у врача уже состоялся). Для диагноза используем дополнительную классификацию (сущность) «тип болезни», а для врача, – классификацию, – «специальность». Результат реструктуризации в виде сводной диаграммы классов: