Навигация:  МОДУЛЬ "ЭЛЕКТРОННАЯ МЕДИЦИНСКАЯ КАРТА" > ХРАНЕНИЕ И ОТОБРАЖЕНИЕ ИНФОРМАЦИИ В СИСТЕМЕ > Формулы >

Синтаксис формул

Предыдущая страницаВернуться в начало главыСледующая страница

В формулах можно использовать математические и логические операции, константы, поля таблиц, активные фильтры, локальные запросы, функции МИС МЕДИАЛОГ.

Математические операции

В формулах поддерживаются следующих математические операции:

+                сложение

-                вычитание

*                умножение

/                деление

Для определения приоритета операций используются скобки: ().

Операции сравнения

В формулах поддерживаются следующих логические операции:

=                равно

<>        не равно

>                больше

<                меньше

>=        больше или равно

<=        меньше или равно

Логические операторы

В формулах поддерживаются логические операторы AND, OR, NOT.

Константы

В формулах допускается использование числовых и текстовых констант. Значение текстовой константы пишется в одинарных кавычках, при этом значение в редакторе подсвечивается синим цветом:

'Hello world!'

parselangstring

Существует возможность вставить в формулу текст на разных языках. Для этого нужно нажать кнопку Вставить строку и ввести значения на нужных языках.

В редакторе формул появится выражение вида ParseLangString('#rus#Фамилия#eng#Surname'). Строка примет соответствующее значение в зависимости от того, с каким кодом языка запускается МЕДИАЛОГ ("rus", "eng" и т.д.).

Специальные символы

Сочетание символов '**' используется для обозначения перехода на новую строку: аналог выражения Char(10)+Char(13) – перенос строки и возврат каретки. В отличие от функции Char() данное сочетание доступно только в формулах для поля и применяется только к мемо-полям.

Комментарии

Комментарии в формулах помещаются между символами /* и */:

/*текст комментария*/

Поля таблиц

Обращение к значению поля в редакторе формул осуществляется в виде {Таблица.Поле}.

043

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

В открывшемся окне (рис. 2.2), выбираются таблица и поле в ней. Ниже нужно указать, какое значение поля требуется подставить в формулу, и нажать кнопку Добавить.

Флажок Текущее поле возвращает курсор на текущую таблицу и текущее (редактируемое) поле.

 Рисунок 2.2. Выбор поля


Рисунок 2.2. Выбор поля

Пустое поле (NULL)

В формулах можно использовать специальное значение NULL, обозначающее, что поле не содержит никакого значения. Для проверки поля на пустое значение используется специальная функция ISNULL(<Поле>). Формула также может возвращать пустое значение, например,

IF(ISNULL( {Анамнез жизни.Развитие} ),NULL,'Заполнено')

Активные и динамические фильтры

043

Список доступных активных фильтров открывается из меню Фильтры по текущему срезу данных кнопки Добавить поле.

Чтобы добавить динамический фильтр, в меню кнопки нужно выбрать пункт Динамический фильтр. В данном пункте меню перечислены динамические фильтры, активные в системе в данный момент. Чтобы вставить в выражение произвольный фильтр, нужно выбрать пункт меню Динамический фильтр / Добавить.

Обращение к активному фильтру: {=Активный фильтр}

Обращение к динамическому фильтру: {=:Таблица.Поле}

Скрипты и запросы

Вызов в формулах скриптов и запросов производится с помощью специальных функций (см. Вызов скриптов и запросов).

043

Чтобы вставить в формулу имя скрипта (запроса), в меню кнопки Добавить поле нужно выбрать пункт Скрипты / запросы и в открывшемся списке выбрать скрипт (запрос).

Локальные запросы

685

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

Обращение к полю локального запроса: {@Локальный запрос.Поле}

Запись таблицы

689

Кнопка Добавить запись позволяет сослаться на ID записи таблицы, при этом данная запись помечается в системе как ресурс. Подробнее о ресурсах см. раздел документации СИСТЕМА ПЕРЕНОСА РЕСУРСОВ. УТИЛИТА RESMANAGER (Administration.pdf).

Функции

В формулах можно использовать функции МИС МЕДИАЛОГ.

639

Чтобы добавить в текст формулы какую-либо функцию, нужно выбрать ее в выпадающем списке и нажать кнопку Вставить функцию в формулу. Название функции в редакторе подсвечивается красным.

Полный список функций см. в разделе Перечень функций МИС МЕДИАЛОГ.

Поиск строки таблицы, n-line таблицы, локального запроса

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

Условие для поиска строки в обычной таблице, n-line таблице или локальном запросе задается после символа |.

Для поиска значения в n-line таблице  после символа | можно прописать условие в виде Таблица.Поле=Значение. В условии поддерживаются логические операторы, математические операции и операции сравнения. Например, чтобы из таблицы Диагнозы получить значение поля Диагноз с классификацией Диагноз стационара = "направившего учреждения" и Вид заболевания – "основное заболевание", используется следующая формула:

{Диагнозы.Диагноз|{Диагнозы.Диагноз стационара} ='направившего учреждения' AND {Диагнозы.Вид заболевания} ='основное заболевание'}

Аналогично определяется условие поиска строки локального запроса. Следующая формула вернет значение поля Развитие текущей записи ЭМК:

{@Анамнез жизни.Развитие|{@Анамнез жизни.MOTCONSU_ID}={=Текущая запись}}

Кроме того, для поиска строки локального запроса используются функции RecCount() и RecNo().

Для поиска строки в обычных таблицах, n-line таблицах и локальных запросах предназначены функции FIND() и FINDNEAREST():

FIND('<поле1> [;<поле2>;<поле3>]', <знач1> [,<знач2>, <знач3>] )

Функция ищет значение(-ия) в поле(-ях). Если находит, позиционируется на найденную строку и возвращает значение поля, иначе возвращает пустое значение null.

FINDNEAREST('<поле1> [;<поле2>;<поле3>]', <знач1> [,<знач2>, <знач3>], <asc|desc> )

Функция, аналогичная функции FIND(), ищет ближайшее подходящее значение, если не найдено точное. Параметр asc|desc – искать ближайшее большее или меньшее значение.

Эти функции доступны только в контексте поиска: после ввода в редакторе формул символа | они отображаются в списке функций (рис. 2.3).

639

Добавить функцию в выражение можно кнопкой Вставить функцию. Ниже с помощью аналогичной кнопки можно выбрать поля таблицы или локального запроса, по которым будет производиться поиск.

 Рисунок 2.3. Функции поиска по таблице и локальному запросу


Рисунок 2.3. Функции поиска по таблице и локальному запросу

Пример: выражение

{Пациенты.Номер ЭМК|FIND('NOM;PRENOM','АБАКУМОВА', 'Ирина' )}

вернет значение поля Номер ЭМК пациента с фамилией "АБАКУМОВА" и именем "Ирина".

Отличие использования выражений поиска и функций FIND(), FINDNEAREST()

При указании выражения поиска после | для n-line таблицы поиск происходит в текущей записи ЭМК. При использовании функций FIND() и FINDNEAREST() поиск производится в срезе данных по пациенту. Таким образом, при необходимости искать данные только в определенной записи необходимо добавить к полям поиска поле MOTCONSU_ID. Например, два следующих выражения аналогичны:

{Диагнозы.Вид заболевания|FIND('N_LINE;MOTCONSU_ID', 2,{=Текущая запись})}

{Диагнозы.Вид заболевания|{Диагнозы.№}=2}