Руководство, помощь и соболезнования

Представленный вам ресурс представляет собой универсальный (более-менее) инструмент подготовки шаблонов для отчетов, в частности, я делал все это для того, чтобы писать протоколы УЗИ (руками в ворде мне показалось медленно).

Для составления отчетов используются заготовки шаблонов - текстовые файлы, написанные в кодировке UTF8 (такие может делать, например, Notepad++), название пишется латиницей;

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

Обработка данных шаблона состоит из 3-х этапов:

первый - заполнение базовых данных о пациенте (вид, масса возраст) и выбор используемого шаблона;
второй - выбранный шаблон обрабатывается программно, и мы получаем форму для заполнения;
третий - на основании заполненной формы выводится отчет, который можно скопировать и вставить куда там вам надо;
ПРОФИТ!

Внимание! При использовании шаблонных тегов не следует добавлять дополнительно перед и после них переносы строки - они останутся для обработки и использования в итоговом отчете!

На текущий момент используются следующие шаблонные теги:

Тег разбивки на блоки: <<div>>

Разбивает текст на отключаемые блоки произвольного содержания, от начала до следующего тега <<div>>, от тега <<div>> до тега <<div>>, от тега <<div>> до конца. При выводе формы для заполнения форма становится разделена на части, между которыми стоят вставки вида:

включить выключить

После отправки формы тот блок, который был отключен при заполнении, не выводится в итоговый отчет.

В случае, если по умолчанию блок не должен выводиться в отчет, внутрь блока нужно вставлять тег <<divoff>>

Теги вывода интерактивных элементов: имеют вид <<insert ...>>

Тег вывода произвольного короткого поля <<insert input>>

Выводит короткое поле для ввода значения (предполагается, что вводится число, хотя можно вводить что угодно); введенное в форме значение в неизменном виде выводится в отчет;

Тег вывода произвольного длинного поля <<insert comment>>

Выводит длинное поле для ввода значения на несколько строк; введенное в форме значение в неизменном виде выводится в отчет;

Тег вывода выбора из нескольких элементов <<insert radio:1-е значение:::2-е значение:::3-е значение>>

Состоит из титульной части и списка возможных значений. Титульная часть insert radio - обязательная, определяет тип тега. От списка возможных значений отделена одним двоеточием; возможные значения в списке разделены 3-мя двоеточиями. В случае, если необходимо установить один из вариантов как выбранный по умолчанию, после него дописываются 3 восклицательных знака, тогда тег приобретает вид

<<insert radio:1-е значение!!!:::2-е значение:::3-е значение>>

После заполнения формы в отчет вписывается выбранное при заполнении формы значение.

Тег вывода формы для заполнения согласно нормативам в таблице <<insert table:test_table.csv:::тестовая таблица >>

Состоит из титульной части, имени файла таблицы с нормативами (должна быть загружена на сервер), заголовка для шаблона. Тиульная часть insert table определяет тип тега, отделена от остальных частей одним двоеточием. Имя файла отделяется от заголовка для шаблона 3-мя двоеточиями.

При выводе в форму шаблона выводится заголовок для шаблона из тега.

Далее программными средствами происходит чтение таблицы; предполагается, что таблица имее вид:

|масса или возраст|контрольный параметр1|контрольный параметр2|контрольный параметр3| - в шапке таблицы, при этом масса указывается в килограммах, возраст - в годах.

Таблицы длжны быть загружены в формате CSV и в кодировке UTF8; я, например, для написания таблиц в этом формате использовал OpenOffice Calc, название пишется латиницей

При чтении таблицы определяется, исходя из шапки, зависят ли представленные данные от массы или от возраста, после чего находится строка, соответствующая данным о текущем пациете, с нее считываются нормативы и в форму выводятся поля вида:

контрольный параметр1: ___ при норме от Х до У
контрольный параметр2: ___ при норме от Х до У
контрольный параметр3: ___ при норме от Х до У

Где Х и У берутся из соответствующих заявленным весу/возрасту пациента ячеек заявленной таблицы.
При заполнении формы, если введенное знаечение не попадает в референтный интервал, текст вводимого значения подсвечивается красным (превышен интервал) или синим (ниже интервала)

В отчете отправленные данные выводятся в формате

контрольный параметр1: Z - выше нормы, при норме от Х до У (предполагается, что Z больше У)

Тег для вывода произвольной формулы с проверкой результата на соответствие интервалу <<insert formula:...>>

Имеет структуру вида <<insert formula:::_перечисление пользовательских аргументов_:::_формулы и допустимые нормативы_>>

Пользовательские аргументы разбиты одним двоеточием и имеют вид аргумент1=A:аргумент2=B:аргумент3=C

Формулы и допустимые нормативы - исходя из пользовательских аргументов и базовых переменных (масса и возраст), можно проводить автоматический пересчет производных значений и проверку их на соответствие минимальным максимальным допустимым значениям. Данные, необходимые для пересчета, записываются в тег в конце, блоками вида

формула:название результата вычисления формулы:минимальное контрольное значение:максимальное контрольное значение

При написании формулы и контрольных значений, которые также могут быть вычисляемыми, используются буквенные значения переменных, использованных во 2-й части тега, и глобальные переменные mass и age - соответственно, масса и возраст.

Блоков может быть сколько угодно, блоки разделяются 2-мя двоеточиями. Например:

<<insert formula:::аргумент1=A:аргумент2=B:аргумент3=C:::A+B/C*mass+age:результат:2+mass+A:5+age-C::A+B-C*mass/age:результат2:2+mass+B:6+age-A>>

При обработке тега мы получим 3 запроса на введение переменных аргумент1, аргумент2, аргумент3; они, а также масса и возраст будут использованы для вычисления результата и результата2, каждое из вычисленных значений будет сравнено с миниумом и максимумом, вычисляемым исходя из введенных переменных и базовых переменных по представленным в теге формулам. То есть:

результат должен быть больше 2+mass+A и меньше 5+age-C;
результат2 должен быть больше 2+mass+B и меньше 6+age-A;
При этом A=аргумент1, B=аргумент2, С=аргумент3, эти значения вводятся при заполнении формы, которая получается после обработки тега.

В отчете результаты выводятся в том же формате, что для тега обработки таблиц.

Тег для вывода подсказок <<insert tips>>

Имеет структуру вида <<insert tips:произвольный текст>>

Произвольный текст после двоеточия выводится в форму для заполнения шаблона, но НЕ выводится в итоговый отчет