Введение
Генератор отчетов представляет собой модуль, который является составной частью программных продуктов компании «Витакор». Модуль предназначен для создания форм отчетов и формирования готовых отчетов (заполнение форм данными). Генератор позволяет создавать и редактировать ранее созданные отчеты без привлечения разработчиков системы, силами подготовленного пользователя или администратора.
Общие сведения
Отчет – документ, формируемый на основе данных, хранящихся в БД приложения. Как правило, отчет имеет форму таблицы (или нескольких таблиц), и даже если отчет имеет нетабличную выходную форму, его данные всегда могут быть представлены в виде таблицы.
На рис.1 показана структура отчета на примере Формы 12 «Сведения о числе заболеваний, зарегистрированных у больных…». Практически любой отчет имеет аналогичнуюструктуру.В более простом случае отчет может состоять только из одного вложенного отчета и может не иметь заголовков строк.
Рис. 1. Структура отчета
В табличной форме данные выводятся в направлении т.н. «осей» отчета – заголовки колонок представляют собой одну ось (ось X), заголовки строк – другую ось (ось Y). Двумерный отчет содержит две оси вывода данных (обычная таблица), трехмерный – три и т.д.Т.о. каждая из «осей» отчета содержит определенный набор показателей, значения которых будут отбираться и/или вычисляться в процессе формирования отчета и выводиться в ячейках таблицы, соответствующих области данных. Наименования этих показателей выводятся в качестве заголовков столбцов (в случае оси X), строк (ось Y) таблицы.
noteСпособы отображения дополнительных осей отчета.
Способы отображения дополнительных осей отчета.
Вышесказанное проиллюстрировано на рис. 2, где показан образец структуры вложенного отчета, описанный в терминах генератора отчетов.
Рис. 2. Структура вложенного отчета в терминах генератора отчетов
Каждой «оси» отчета соответствует т.н. «Группировщик»: сущность, описывающая структуру оси – количество показателей, порядок их следования и группировку.
Группировщик, в свою очередь, содержит составные элементы – группы, соответствующие заголовкам и подзаголовкам строк или столбцов отчета. Из схемы видно, что группы могут иметь иерархические связи между собой. Каждый группировщик связывается с определенностью сущностью БД системы и для каждой его группы указываются правила отбора данных и расчета значения.
На пересечении групп по различным осям отчета, в области данных, располагаются собственно данные отчета. Содержимое ячейки отчета на пересечении областей данных групп определяется правилами, заданными для этих групп.
noteРуководствуясь данным описанием структуры отчета можно выделить следующий перечень и последовательность разработки составных элементов отчета:
Руководствуясь данным описанием структуры отчета можно выделить следующий перечень и последовательность разработки составных элементов отчета:
Вложенные отчеты;
Для каждого вложенного отчета: группировщики, их количество, расположение;
Для каждого группировщика: группы, их количество и отношения между ними.
Важно для всех элементов отчета подобрать информативные наименования для того, чтобы в дальнейшем, при использовании и редактировании отчета можно было легко читать его структуру
noteДопустимые форматы отчета:
Допустимые форматы отчета:
документа MS Word (.doc);
электронной таблицы MS Excel (.xls);
документа HTML;
текстового документа.
Для возможности создания шаблона отчета на компьютере пользователя должна быть установлена программа, соответствующая требуемому формату отчета.
Создание отчета
Для создания нового отчета необходимо на панели структуры приложения выбрать папку «Отчеты» " «Генератор отчетов» и в открывшемся списке отчетов добавить новый элемент с помощью кнопки панели инструментов или контекстного меню списка.
Порядок следования подразделов данного раздела руководства в целом соответствует последовательности создания отчета в системе.
Создание шаблона отчета
Форма редактирования отчета открывается на вкладке рабочей области приложения и имеет вид, показанный на Рис. 3
Рис. 3. Форма редактирования данных отчета
Состав реквизитов формы описан ниже (в порядке следования полей на форме):
Реквизит | Описание |
---|---|
Наименование отчета | Поле для ввода наименования отчета, которое будет идентифицировать отчет в системе. |
<Просмотр> | Кнопка для запуска формирования отчета и просмотра его данных в окне приложения. |
<Сформировать> | Кнопка для запуска формирования отчета в виде электронного документа, соответствующего заданному шаблону. |
Вложенные отчеты | Раздел формы, предназначенный для ведения списка вложенных отчетов. |
Файлы отчета | Раздел для ведения списка шаблонов печатных форм, соответствующих данному отчету. |
Права на отчет | Раздел ведения списка ролей, которым предоставлено право доступа к данному отчету. |
Создание вложенного отчета
noteВложенный отчет – это составной элемент отчета, для которого могут быть указаны:
Вложенный отчет – это составной элемент отчета, для которого могут быть указаны:
шаблон структуры, определяющий состав данных, структуру табличной формы и правила отбора данных;
правила отбора данных (дополнительно к правилам, заданным в шаблоне структуры);
правила сортировки данных.
Отчет должен включать как минимум один вложенный отчет. Количество вложенных отчетов не ограничивается.
Ведение списка осуществляется с помощью кнопок-ссылок «Добавить» и «Удалить» (Рис.4)
Рис. 4.
Позиция списка открывается для просмотра и редактирования двойным кликом мышью на нужной строке. Форма редактирования данных вложенного отчета показана на рис.5.
Рис. 5. Форма редактирования вложенного отчета
Состав реквизитов формы описан ниже (в порядке следования полей на форме):
Реквизит | Описание |
---|---|
Отчет | Поле ссылки на шаблон структуры вложенного отчета. Список шаблонов открывается кнопкой , в котором можно выбрать уже существующий шаблон или создать новый с помощью контекстного меню списка. |
Кнопка | Кнопка для открытия формы редактирования шаблона структуры. |
Ссылка | Наименование вложенного отчета, которое будет использоваться для ссылки на вложенный отчет в шаблоне печатной формы отчета. |
Фильтр на отчет | Вкладка для создания условия отбора данных для отчета с помощью редактора выражений. Если для вложенного отчета уже создана и указан шаблон структуры отчета, в левой панели фильтра отображаются атрибуты сущности данных, связанной с шаблоном. |
Сортировка | Вкладка для настройки порядка сортировки данных отчета. |
Следует иметь в виду, что фильтр и сортировка данных, указываемые в данной форме, применяются к данным БД до применения всех остальных условий отбора и операций работы с данными, заданных для группировщиков и групп отчета.
Если условие фильтра на данные не задано, в расчет будут взяты все данные данной сущности. При большом объеме данных формирование отчета может занять значительное время. Поэтому после создания и настройки шаблона структуры вложенного отчета следует вернуться к данному разделу формы и указать правило отбора данных или убедиться, что требуется анализ полного набора данных. Как правило, отчетные формы содержат какие-либо фильтры на данные – по периоду, организации и т.д.
Сортировка данных также может иметь большое значение при расчете значений отчета. Если сортировка не будет задана, данные для отчета будут отобраны в том порядке, в каком они лежат на жестком диске базы данных приложения, что может не отвечать цели формирования отчета. В частности, может потребоваться отобрать запись, последнюю по учетной дате (последнее посещение, последнее обращение и т.д.). В этом случае для данных должна быть задана сортировка по требуемой дате.
Создание шаблона структуры вложенного отчета
Шаблон структуры вложенного отчета определяет данные, которыми будет наполняться отчет, и структуру этих данных (структуру табличной формы). Форма редактирования данных шаблона структуры показана на рис 6.
Рис. 6. Форма редактирования данных сущности, соответствующей вложенному отчету
Состав реквизитов формы описан в таблице (в порядке следования полей на форме):
Реквизит | Описание |
---|---|
Вкладка «Основное» | |
Наименование | Поле ввода наименования структуры шаблона. Это наименование отображается в списке шаблонов при создании вложенного отчета, поэтому наименование должно быть максимально информативным. |
Тип данных | Поле для выбора сущности, данные которой требуется представить в отчете. Выбор производится из полного справочника сущностей системы. |
Группировщики | Раздел для ведения списка группировщиков. Ведение списка производится с помощью кнопок-ссылок «Добавить» и «Удалить». Позиция списка открывается для просмотра двойным кликом мышью на нужной строке. |
Группировщик
Группировщик определяет структуру заголовков табличной формы. Форма редактирования данных группировщика показана на Рис.7.
Рис. 7. Форма редактирования группировщика
Состав реквизитов формы описан в таблице (в порядке следования полей на форме):
Реквизит | Описание |
---|---|
Генератор | Поле для указания шаблона структуры группировщика.Список шаблонов открывается кнопкой , в котором можно выбрать уже существующий шаблон или создать новый с помощью контекстного меню списка. |
Кнопка | Кнопка открытия формы редактирования шаблона структуры группировщика. |
Путь до генератора | Поле для выбора атрибута |
Описание | Текст, описывающий группировщик. Этот текст будет выводиться в списке группировщиков вложенного отчета, поэтому он должен быть максимально информативным. |
Ссылка | Имя группировщика, которое будет использоваться для ссылки на него в шаблоне печатной формы отчета. |
Структуры группировщика
Структура группировщика соответствует заголовкам, отображаемым в оси отчета, и описывается с помощью формы редактирования, показанной на Рис 8.
Рис.8. Форма редактирования структуры группировщика
Рис.9. Вариант структуры группировщика
Состав реквизитов формы описан в таблице:
Реквизит | Описание |
---|---|
Наименование | Поле для указания шаблона структуры группировщика.Список шаблонов открывается кнопкой , в котором можно выбрать уже существующий шаблон или создать новый с помощью контекстного меню списка. |
Сущность | Кнопка открытия формы редактирования шаблона структуры группировщика. |
Раздел ведения списка групп | Поле для выбора атрибута |
Список групп | Текст, описывающий группировщик. Этот текст будет выводиться в списке группировщиков вложенного отчета, поэтому он должен быть максимально информативным. |
Кнопка | Кнопка добавления элемента списка. |
Кнопка | Кнопка удаления выделенного элемента списка. |
Кнопки | Кнопки управления порядком следования элементов списка. Выделенный элемент при нажатии на кнопку перемещается на одну позицию вверх/вниз. |
Раздел редактирования группы | Панель, содержащая форму редактирования группы. Панель становится видна при выделении элемента иерархического списка групп. |
Создание группы
Группа определяет один из заголовков таблицы по данной оси отчета, а также правило формирования значения, которое будет выводится в я
чейках области данных группы.
Новая группа создается по нажатию кнопки раздела ведения списка групп формы. При нажатии кнопки
пользователю предлагается выбор типа группы:
«Статическая группа»соответствует заголовку таблицы, текст и данные которого определяются разработчиком отчета на этапе разработки отчета. От текущего состояния БД системы будут зависеть только значения области данных, соответствующие заголовку.
В отличие от статической «Группа по атрибутам»позволяет содержимое заголовков формировать также на основании данных БД. Например, в качестве заголовков колонок таблицы могут быть взяты значения какого-либо справочника.
Форма редактированиягруппы отображается в правой части формы при выделении элемента в списке и ее внешний вид зависит от типа группы.
Статическая группа
На рисунках ниже показан внешний вид формы редактирования статической группы.
Рис.8. Форма редактирования структуры группировщика
Рис.9. Вариант структуры группировщика
Состав формы описан в таблице:
Реквизит | Описание |
---|---|
Наименование | Наименование группы (заголовка или подзаголовка) |
Ссылка | Имя группы, используемое в шаблоне печатной формы отчета. Текст ссылки генерируется автоматически при создании новой группы. Автоматически созданное имя имеет вид «СсылкаN», где N –номер группы по порядку создания. Вместо него можно ввести собственное более информативное имя, по которому будет легче ориентироваться в шаблоне печатной формы. |
Вычисление по формуле | Флажок определяет, какие значения будут включены в область данных, соответствующую группе. По умолчанию флажок снят, что означает, что будет вестись подсчет количества значений, удовлетворяющих условию отбора, заданному на вкладке «Условие». Включение флажка делает доступной вкладку «Формула». |
Вкладка «Условие» | Вкладка для создания условия отбора данных, на основании которых должны быть вычислены значения в области данных группы. Условие создается с помощью редактора выражений (см. руководство по редактору выражений). |
Вкладка «Формула» | Вкладка доступна, если включен флажок «Вычисление по формуле», и предназначена для создания выражения с помощью редактора[1]. Данное выражение используется для расчета значений области данных, соответствующих группе. Возможные варианты вычисления описаны ниже. [1]См. руководство пользователя по редактору выражений. |
На обеих вкладках в левой части редактора выражений отображаются атрибуты сущности, указанной в шаблоне структуры группировщика. Таким образом, с помощью данной формы создаются условия отбора записей сущности данных (вкладка «Условие») и правило их обработки для включения в отчет (вкладка «Формула»).
Существует два варианта использования выражения, созданного на вкладке «Формула». Нужный выбирается с помощью переключателя «По значению»/«По группе значений»:
По умолчанию переключатель установлен в положение «По значению». Это означает, что выражение будет использовано как математическая формула. В самом простом случае выражение может состоять из одного атрибута, имеющего числовое значение. Тогда при формировании отчета в ячейку области данных будет помещено значение, равное сумме значений атрибута, удовлетворяющих условию отбора. Выражение также может включать различные арифметические операции с атрибутами сущности, имеющими числовые значения.
Положение переключателя «По группе значений» позволяет создать с помощью редактора выражение, вычисленное значение которого будет использоваться как ключ поиска уникальных записей (результатом вычисления выражения должна быть строка). Результирующим значением будет количество записей, удовлетворяющих значению ключа (в дополнение к условию, заданному на соответствующей вкладке). Это может понадобиться, если обрабатывается сущность, соответствующая посещениям, и при этом требуется показать количество пациентов, чьи посещения включены в отчет.
Группа по атрибутам
Форма редактирования данных группы по атрибутам показана на рисунке ниже.
Рис. 12 Фрагмент формы редактирования структуры группировщика
с открытой формой редактирования группы по атрибутам
Состав элементов формы описан в таблице:
Реквизит | Описание |
---|---|
Наименование | Наименование группы (заголовка или подзаголовка) |
Ссылка | Имя группы, используемое в шаблоне печатной формы отчета. Текст ссылки генерируется автоматически при создании новой группы. Автоматически созданное имя имеет вид «СсылкаN», где N –номер группы по порядку создания. Вместо него можно ввести собственное более информативное имя, по которому будет легче ориентироваться в шаблоне печатной формы. |
Строка формата | Поле ввода регулярного выражения, с помощью которого значение указанного атрибута будет преобразовано в текст заголовка таблицы. |
Сортировка | Порядок сортировки значений атрибута при выводе заголовков. |
Добавить или удалить путь группировки можно с помощью следующих кнопок на панели:
Реквизит | Описание |
---|---|
Добавить путь группировки. | |
Удалить путь группировки. | |
Кнопки управления порядком следования элементов списка. Выделенный элемент при нажатии на кнопку перемещается на одну позицию вверх/вниз. |
Атрибут выбирается из ветки атрибутов сущности:
Рис. 13. Путь группировки
Пример создания отчёта
Создадим отчет, который считает количество людей по полу и возрастам и по типам травм.
Создаем новую форму отчета, задаем название и нажимаем на кнопку «Добавить», чтобы создать вложенный отчет:
На открывшейся форме «проваливаемся» в сущность, где хранятся вложенные отчеты и создаем новый с помощью вызова контекстного меню:
На открывшейся форме обобщенной сущности для вложенного отчета заполняем поле с названием и выбираем сущность, на которой будет строится отчет. Сейчас это сущность OUTCOM_OF_INSPECTION (Исход-диагнозы).
Нажимаем ОК.
Нажимаем ОК. Группировщики создать чуть позже. Сначала нужно закончить содание вложенного отчета.
Указываем ссылку.
Теперь нужно добавить фильтр. Это будет основной фильтр отчета.
Строим такой фильтр: (Подробнее о работе с фильтрами в инструкции Редактора выражений.)
Теперь создадим группировщики:
Нажимаем на кнопку «Добавить». Откроется форма, на которую указывается ссылка на генератор:
«Проваливаемся» в сущность, хранящую группировщики и создаем новый, вызвав контекстное меню:
В открывшейся новой форме группировщика пишем название и выбираем сущность.
Группы добавим после. Нажмем Ок и заполним поля «Описание» и «Ссылка».
Обычно у нас два группировщика X и Y.
По X у нас будет пол и возраст, а по Y список травм.
Создаем второй группировщик – Y по тому же принципу.
Оба группировщика созданы (их может быть и больше, но в большинстве отчетов их два).
Теперь создать группы атрибутов.
Начнем с Х – пол и возраста.
Разобьем возраста только на детей и взрослых.
Получится такая структура группировщика:
Фильтры:
Женский пол
Дети
Взрослые
Обязательно проставляем ссылки для каждой статической группы.
Получилось так:
Ссылки нам понадобятся для построения шаблона для отчета.
Теперь добавим структуру для группировщика Y.
Здесь добавим группы по атрибутам.
Выведем код и наименование травмы. Т.к. группировки две – редактируем строку формата.
Еще добавим Статическую группу «Всего». Фильтр оставим пустым.
Структура группировщика будет такой:
Все сохраняем.
Проверяем работоспособность отчета с помощью кнопки «Просмотр».
Данные выводятся так:
Теперь создадим шаблон отчета.
Указываем начало и конец цикла для всего шаблона
%%#xsl:for-each select='{*}'%%
%%#xsl:end%%
Вытаскиваем указываемые параметры «Дата с» и «Дата по» таким образом:
За период c %%{Дата с{0:dd.MM.yyyy}}%% по %%{Дата по{0:dd.MM.yyyy}}%%
Чтобы вытащить группу по атрибутам добавляем цикл в таблицу и в for-each указываем путь до группы.
Выглядит это так:
%%#xsl:for-each select='{Y/Childs}'%%
%%{Group}%%
%%#xsl:end%%
Получится такой шаблон:
Если сформируем отчет на данном этапе, он будет выглядеть так:
Теперь надо добавить ссылки на группировщик по X.
Путь до Женщин-детей, как мы помним такой X/p1/s1
Строим такую конструкцию: %%{ X/p1/s1/Value}%%
Функция Value вытаскивает значение атрибута по указанному адресу. Прописывать ее обязательно.
Указывать путь до групп группировщика Y в данном случае не нужно, так как атрибут %%{Group}%% воздействует на всю строку.
Если бы в Y были статические группы, по пути, например Y/k1/b2, то сслка получилась бы такая:
%%{ X/p1/s1/ Y/k1/b2/Value}%%
Последовательность указания пути до X или Y не важна.
Ссылки %%{ X/p1/s1/ Y/k1/b2/Value}%% и %%{ Y/k1/b2/X/p1/s1/ Value}%% - одинаковы и выведут одно и тоже значение.
Проставляем ссылки в шаблон отчета. Выглядеть он будет так:
Сохраняем и формируем отчет:
Отчет готов.