*

Шаблоны печати

Содержание

Общие принципы

Шаблон - это текст, состоящий из двух "компонент" - обычного html-я, и специальных вставок в {}. Кодировка текста может быть utf-8 или cp1251; если во вставках нужны строки, то независимо от кодировки нужно использовать префикс unicode - типа u'привет'. Вставки "равнодушны" к синтаксису окружающего html. В процессе обработки шаблона html превращается в операторы печати, вставки - в соотв. фрагменты программы на python. В случае успеха компиляции полученная программа выполняется - а результат выводится в окно просмотра.

Вставки имеют следующий синтаксис:

    • '{'<ключевое слово>':'<выражение>'}'
    • '{'<выражение>[':'[формат]]'}'

<ключевое слово> ::= 'if' | 'elif' | 'else' | 'for' | 'end' | ' ' ;

Поскольку в python используются отступы, а в шаблоне печати отступы не так удобны как в программе, мы добавили ключевое слово end, ключевые слова if, elif и else, for увеличивает отступ, а end уменьшает. Пустое ключевое слово { : setPageSize('A4') } приводит к генерации соотв. выражения как оператора. Вторая форма (без ключевого слова) приводит к генерации оператора печати значения выражения. Образцы применения будут дальше по тексту. <выражение> - выражение на python, его необходимость и смысл определяется ключевым словом. <формат> := 'h'|'n'| ' '; - применяется для "пост-обработки" полученного в процессе вычисления выражения значения. Если двоеточие пропущено, то формат считается пустым. • 'h': считается, что выражение содержит фрагмент не требующий обработки • ' ': производится замена символов типа '<' на '<' • 'n': в дополнение к предыдущему добавляется замена \n на

так

----

{'[1]\n[2]\n[3]\n[<]\n[bold]':h}

----

{'[1]\n[2]\n[3]\n[<]\n[bold]'}

----

{'[1]\n[2]\n[3]\n[<]\n[bold]':n}

{{begDate} - значение параметра "Дата начала" (или "На дату" для вкладки Состоят), CDateInfo {endDate} - значение параметра "Дата окончания", CDateInfo {orgStructureId} - значение параметра "Подразделение врача", COrgStructureInfo {specialityType} - значение параметра "Специальность", определение типа отбора, 0 - "Отбор по ИЛИ", 1 - "Отбор по И" {for: spec in specialityId}{spec.code} {spec.name} {end:} - значение параметра "Специальность", CSpecialityInfo {personId} - значение параметра "Врач", CPersonInfo {MKBFilter} - значение параметра "Коды диагнозов по МКБ", определение типа фильтра, 0 - "Игнор.", 1 - "Интервал", {MKBFrom} - значение параметра "Коды диагнозов по МКБ", определение первого значения диапазона, CMKBInfo {MKBTo} - значение параметра "Коды диагнозов по МКБ", определение последнего значения диапазона, CMKBInfo}}

превратится в

________________________________________

    • [1] [2] [3] [<] [bold]

________________________________________

    • [1] [2] [3] [<] [bold]

________________________________________

    • [1]
    • [2]
    • [3]
    • [<]
    • [bold]

________________________________________

Параметры печати

    • Формат бумаги А3/А4/А5/A6 {: setPageSize('A4')} или размеры в мм: A3 - 297x420, A4 - 210x297, A5 - 148x210, A6 - 105x148 {: setPageSize('210x297') }
    • Ориентация Книжный-P/Альбомный-L {: setOrientation('L')}
    • Поля:
    1. все {:setMargins(5)}
    2. правое {:setLeftMargin(150)}
    3. верхнее {:setTopMargin(5)}
    4. нижнее {:setBottomMargin(5)}
    5. левое {:setRightMargin(5)}
    • Наименование подписываемого файла:

{:documentName = (action.endDate.toString('dd.MM.yyyy') +u' '+ action.title) setDocumentName(documentName)}

Подписанный и прикрепленный документ будет иметь имя вида - "01.01.2022 Осмотр врача.pdf".

________________________________________

Поиск по тексту шаблона

Реализована возможность поиска текста в выведенном шаблоне печати. ПКМ - Найти (или Ctrl+F) - в верхней части окна шаблона появится окно для ввода запроса. Переход между найденными результатами осуществляется с помощью кнопок "Следующее" и "Предыдущее". Если больше совпадений нет - появится надпись "Поиск не дал результатов".

Данным нововведением особенно удобно пользоваться в шаблонах Логи ИЭМК, Логи УО и других подобных.

Оперативный ввод переменных (Диалоги)

dialogs (CDialogsInfo) - мастер диалогов. Содержит список диалогов, по которому можно перемещаться вперёд и назад и вводить простейшие данные. Каждый диалог имеет тип CSimplePrintDialog и содержит метод getVar(), позволяющий извлекать эти данные. Кнопка "OK" - переход к следующему диалогу. Кнопка "Отмена" - также переход к следующему диалогу, при этом считается, что в диалог введено значение по умолчанию default. Но, если при создании диалога значение default не указано, getVar() возвращает None.

Мастер диалогов содержит методы:

    • dialXXX(title, ...) - создать, добавить в конец списка и запустить диалог ввода простейших данных.
    • createDialXXX(title, ...) - создать и добавить в конец списка диалог ввода простейших данных.
    • activate(dialog) - запустить диалог

Методы, запускающие диалоги ввода простейших данных:

    • dialInt(title, min, max, step=1, default=min) - диалог ввода целого числа с заголовком title. Число - от min до max, меняется с шагом step, начальное значение default
    • dialFloat(self, title, min, max, step, decimals, default=min) - диалог ввода вещественного числа с заголовком title. Число - от min до max, меняется с шагом step, начальное значение default, отображается decimals знаков после запятой
    • dialBool(self, title, name, default=False) - диалог ввода логического значения (CheckBox) с заголовком title. name - текст, который будет написан рядом с CheckBox. default - начальное состояние CheckBox (True - нажата, False - нет)
    • dialDate(self, title, default=currentDate) - диалог ввода даты с заголовком title.
    • dialTime(self, title, default='00:00') - диалог ввода времени с заголовком title.
    • dialString(self, title, default="") - диалог ввода строки с заголовком title.
    • dialList(self, title, lst=[], default=0) - диалог выбора строки из списка lst с заголовком title. default - начальный номер текущего элемента. Для диалога getVar() возвращает номер выбранной строки в списке, getListValue() - саму выбранную строку.
    • dialMultiList(self, title, lst=[] [, select]) - диалог выбора нескольких строк из списка lst с заголовком title. Пераметр select задает выбор элементов списка: 0-не выбраны, 1-выбран первый элемент (по умолчанию), 2- выбраны все элементы. Для диалога getVar() возвращает массив номеров выбранных строк в списке, getListValues() - сами выбранные строки.

Пример 1:

{dialogs.dialString(u"Введите имя врача", "").getVar()} - отображает строку, введённую в диалоге

Пример 2:

{: dial1 = dialogs.dialString(u"Введите строку", "default string" ) }

{: str = dial1.getVar()}

{: dial2 = dialogs.dialList(u"Выберите элемент", ["first", "second", str], 1) }

{:dial2m = dialogs.dialMultiList(u"Выберите элементы", ["first", "second", str], 1) }

{: dial3 = dialogs.dialInt(u"Введите целое число", 66, 78, 3, 70) }

{: dial4 = dialogs.dialFloat(u"Введите вещественное число", -2, -1.5, 0.11, 2)}

{: dialb = dialogs.dialBool(u"Введите логическое значение", u"Я хочу продолжить", True)}

{: yes = dialb.getVar() }

{if: yes}

{: dial5 = dialogs.dialDate(u"Введите дату" ) }

{: dial6 = dialogs.dialTime(u"Введите время", '00:00' ) }

{: dat = dial5.getVar() }

{: tim = dial6.getVar() }

{end:}

{: str = dial1.getVar() }

{: value = dial2.getListValue()}

{: values = dial2m.getListValues()}

{: integ = dial3.getVar() }

{: flo = dial4.getVar() }

Выводится диалог ввода строки. Затем диалог выбора элемента из списка, в котором данная строка - третья по счёту. Затем диалог выбора нескольких элементов из такого же списка. При возвращении назад и вводе новой строки диалоги выбора из списка не изменятся - они уже созданы и запущены! Затем диалог ввода целого числа от 66 до 78 с начальным элементов 70 и шагом 3. Затем - диалог выбора вещественного числа от -2 до -1.5 с начальным элементом -2 и шагом 0.11. Затем диалог с CheckBox, рядом с которым написано "Я хочу продолжить". Если пользователь не снял CheckBox, отображается диалог ввода даты и времени. Между всеми этими диалогами можно двигаться вперёд-назад. Выбранные значения сохраняются, соответственно, в переменных str, value, values, integ, flo, yes, dat, tim.

Вывод диалогового окна подтверждения

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

Пример:

{if: currentPerson.post.identify('urn:oid:1.2.643.5.1.13.13.11.1002') not in  ( '4', '5', '427', '428', '6', '7', '429', '430', '431', '432', '433', '434', '435', '436', '437', '438', '8')}

{:from PyQt4.QtGui import QMessageBox as mb }

{if: mb.critical(None, u'Проверка должности', u'ВНИМАНИЕ!\nДолжность текущего пользователя\nне соответствует требованиям ЕГИСЗ!\nВсе равно продолжить?',

mb.Yes|mb.No, mb.No) != mb.Yes }

{ exit(0) }

{end:}

{end:}

Определение числа дней в периоде дат

Для объекта типа CDateInfo (в том числе, currentDate), есть свойство date типа QDate. У QDate, в свою очередь, есть метод daysTo и workDaysTo.

Примеры:

{:from PyQt4.QtCore import QDate}

{:from library.PrintInfo import CDateInfo}

{:begDate = CDateInfo(QDate(2022, 1, 1))}

{:endDate = CDateInfo(QDate(2022, 2, 1))}

{begDate.daysTo(endDate)}

{begDate.workDaysTo(endDate)}

action.begDate.date.daysTo(action.endDate.date) - дней от начала действия до конца

event.execDate.date.daysTo(currentDate.date) - прошло со времени события

Полезные функции Python

    • Функция позволяет узнать, есть ли какой-либо атрибут у объекта:

hasattr(объект, 'имя_аттрибута')

Пример использования: {if: hasattr(diagnosis, u'MKBEx')}

    • dir(объект) - список всех полей(переменных) объекта

Пример использования: {dir(arr[0])}

    • Функция amountToWords преобразует число в сумму прописью

Пример использования: {amountToWords(account.sum)}

    • {:exit()} - функция прерывает выполнение шаблона печати (без показа диалогового окна).

Пример использования:

{:from PyQt4.QtGui import QMessageBox}

{:buttons = QMessageBox.Yes | QMessageBox.No}

{:reply = QMessageBox.question(None, '', u'Показать окно шаблона?', buttons)}

{if: reply == QMessageBox.Yes}

<h2>Текст шаблона</h2>

{else:}

{:exit()}

{end:}

    • Следующая конструкция позволяет вызывать в печать один шаблон из тела другого шаблона:

Пример использования:

{:from library.PrintTemplates import applyTemplate}

{:applyTemplate(None, 72, globals())}

В печать будет вызван шаблон с id=72 (rbPrintTemplate)

    • Конструкция, которая выводит данные из свойства с переносами строк и пробелами:

Пример использования:

{action[...].value.replace('\n', '<br>').replace(' ', ' ') :h}

Визуализация отметки об электронной подписи документа

Для визуализации отметки об электронной подписи в документе используется:

{userCertPlate():h}.

Рекомендуется использовать в связке с условием проверки соответствия СНИЛС исполнителя действия и текущего пользователя:

{if:userCertPlate() == u' '}

{action.person.post}:____________________/{action.person.shortName}

{elif: action.person.SNILS == currentPerson.SNILS}

{userCertPlate():h}

{else:}

{action.person.post}:____________________/{action.person.shortName}

{end:}

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

Также существует возможность обратиться к СНИЛС непосредственно в сертификате электронной подписи:

{:from PyQt4 import QtGui}

{:from library.MSCAPI import MSCApi}

{:snils = QtGui.qApp.getUserCert(MSCApi(QtGui.qApp.getCsp())).snils()}

При острой необходимости изменить размер отметки об электронной подписи можно использовать следующее:

{:s = userCertPlate()}{s[:5] + 'width="384" height="114" ' + s[5:] :h}.

Встраивание штрих-кодов

В шаблонах печати можно использовать как одномерные - Code 39 и Code 128, так и двумерные штрих-коды - Data Matrix, PDF417 и QR-код. Одномерные у нас реализованы с привлечением подходящих шрифтов, двумерные создаются как растровые изображения.

Кодирование в base64

Cтроки имеют метод .encode(<кодировка>)

Обычные 8-битные строки можно кодировать с указанием 'base64' в качестве кодировки.

Пример:

>>> 'Hello world!'.encode('base64')

'SGVsbG8gd29ybGQh\n'

Для строк содержащих помимо латиницы еще и кириллицу в САМСОН обычно используются юникодные строки и для таких строк кодирование в base64 не определено. Поэтому сначала нужно перевести в подходящую случаю 8-битную кодировку, а потом уже - в base64.

>> u'Привет от Петрова и Бaширова!'.encode('utf-8').encode('base64')

'0J/RgNC40LLQtdGCINC+0YIg0J/QtdGC0YDQvtCy0LAg0Lgg0JFh0YjQuNGA0L7QstCwIQ==\n'

>>> u'Привет от Петрова и Бaширова!'.encode('utf-16').encode('base64')

'//4fBEAEOAQyBDUEQgQgAD4EQgQgAB8ENQRCBEAEPgQyBDAEIAA4BCAAEQRhAEgEOARABD4EMgQw\nBCEA\n'

>>> u'Привет от Петрова и Бaширова!'.encode('utf-16be').encode('base64')

'BB8EQAQ4BDIENQRCACAEPgRCACAEHwQ1BEIEQAQ+BDIEMAAgBDgAIAQRAGEESAQ4BEAEPgQyBDAA\nIQ==\n'

>>> u'Привет от Петрова и Бaширова!'.encode('utf-16le').encode('base64')

'HwRABDgEMgQ1BEIEIAA+BEIEIAAfBDUEQgRABD4EMgQwBCAAOAQgABEEYQBIBDgEQAQ+BDIEMAQh\nAA==\n'

>>> u'Привет от Петрова и Бaширова!'.encode('cp1251').encode('base64')

'z/Do4uXyIO7yIM/l8vDu4uAg6CDBYfjo8O7i4CE=\n'

>>> u'Привет от Петрова и Бaширова!'.encode('cp866').encode('base64')

'j+CooqXiIK7iII+l4uCuoqAgqCCBYeio4K6ioCE=\n'

>>> u'Привет от Петрова и Бaширова!'.encode('koi8-r').encode('base64')

'8NLJ18XUIM/UIPDF1NLP18EgySDiYdvJ0s/XwSE=\n'

>>> u'Привет от Петрова и Бaширова!'.encode('iso8859-5').encode('base64')

'v+DY0tXiIN7iIL/V4uDe0tAg2CCxYejY4N7S0CE=\n'

Обращаем внимание на переводы строк, encode('base64') по непонятной причине не только перекодирует, но ещё добавляет переводы строк - в примере с 'utf-16' их два, они обозначены как \n. Можно использовать замену переноса строк на пустые строки:

>>> u'Привет от Петрова и Баширова!'.encode('cp1251').encode('base64').replace('\n', '')

'z/Do4uXyIO7yIM/l8vDu4uAg6CDBYfjo8O7i4CE='

Подстановка данных в шаблон

Текущая дата: {currentDate}

Текущее время: {currentTime}

Текущий населенный пункт (Предпочтения): {defaultKLADR[:2]}

Текущая область (Предпочтения): {provinceKLADR[:2]}

Текущее подразделение: currentOrgStructure (COrgStructureInfo), имеет свойства:

    • Сокращенное название:{name} (строка),
    • {infisInternalCode} (строка),
    • {infisDepTypeCode} (строка),
    • Полное название:{fullName} (строка)
    • Организация, к которой принадлежит подразделение:{organisation} (COrgInfo),
    • Родительское подразделение:{parent} (COrgStructureInfo)
    • Адрес:{address} (строка)
    • Начальник подразделения: {chief} (типа CPersonInfo)
    • Старшая мед.сестра подразделения: {headNurse} (типа CPersonInfo)
    • Поле "Примечания": {note}

Текущий пользователь: currentPerson (CPersonInfo)

Пациент: client (CClientInfo)

    • код: {client.id}
    • код ЛПУ + код пациента: {'*'+currentOrganisation.miacCode+'.'+client.id+'*'}
    • штрих код: *{client.id}*
    • ФИО: {client.fullName} (строка)
    • Фамилия И.О.: {client.shortName} (строка)
    • Фамилия: {client.lastName} (строка)
    • Имя:{client.firstName} (строка)
    • Отчество: {client.patrName} (строка)
    • Дата Рождения: {client.birthDate} (CDateInfo)
    • Время Рождения: {client.birthTime}
    • Место рождения: {client.birthPlace}
    • Дата смерти: {client.deathDate}
    • Возраст: {client.age} (строка)
    • Пол: {client.sex} ('М'/'Ж')
    • СНИЛС: {client.SNILS} (строка)
    • Документ: {client.document} (CClientDocumentInfo)
    • Тип документа: {client.document.type}
    • Серия документа: {client.document.serial}
    • Номер документа: {client.document.number}
    • Кем выдан: {client.document.origin}
    • Код подразделения: {client.document.originCode}
    • Дата выдачи документа: {client.document.date}
    • Полис: {client.policy} (CClientPolicyInfo)
    • Адрес регистрации: {client.regAddress} (CClientAddressInfo)
    • Адрес проживания: {client.locAddress} (CClientAddressInfo)
    • Занятость: {client.work} (CClientWorkInfo)
    • Группа крови: {client.bloodType} (строка)
    • Дата определения группы крови: {client.bloodDate}
    • Примечания по группе крови: {client.bloodNotes}
    • Аллергии: {client.allergies} (CClientAllergyInfoList)
    • Лекарственные непереносимости: {client.intolerances} (CClientIntoleranceMedicamentInfoList)
    • Телефоны: {client.phones} (строка) . Также в данном блоке содержится информация об эл.почте пациента
    • Дата и время добавления в БД пациента(таблица Client): {client.createDatetime}
    • Автор добавления в БД пациента(таблица Client):{client.createPerson}
    • Дата и время изменения регистрационной карточки пациента:{client.modifyDatetime}
    • Автор изменения регистрационной карточки пациента:{client.modifyPerson}

Пример печати телефона и эл.почты пациента:

{:contact1=[]}

{:contact2=[]}

{if: len(client.phones)}

{:phones = client.phones.split(', ')}

{for: phone in phones}

{:items = phone.replace(':',' ').split(' ')}

{if: items[1]==u'телефон' and items[3]!=''}

{:contact1.append(items[3])}

{end:}

{if: items[1]==u'почта' and items[3]!=''}

{:contact2.append(items[3])}

{end:}

{end:}

{end:}

Телефон: {if: contact1}{for: item in contact1}{item}, {end:}{else:}______________________{end:}

Электронная почта: {if: contact2}{for: item in contact2}{item} {end:}{else:}_________________________{end:}

    • Телефоны(2): {client.contacts} (массив) . Выводится массив, у которого в каждом элементе по 3 параметра: тип контакта, контакт и примечание.

Пример:

{for: contact in client.contacts}

Тип контакта: {contact[0]}

Контакт: {contact[1]}

Примечание: {contact[2]}

{end:}

    • Постоянное прикрепление: {client.permanentAttach} (CClientAttachInfo)
    • Временное прикрепление: {client.temporaryAttach} (CClientAttachInfo)

Для новорождённых и маленьких пациентов

    • Рост при рождении {client.birthWeight}
    • Вес при рождении {client.birthHeight}

Вкладка картотека (контекст token)

Доступна печать информации из фильтров.

    • Прикрепление «по заявлению» {isStatement}

clientsList - Отфильтрованный список пациентов

Пример вывода списка из «Картотеки»:

{for: c in clientsList}

{c}

{end:}

Согласия пациента: (client.consents} (CClientConsentInfo)

Класс CClientConsentInfo (Данные о согласиях пациента):

    • id - идентификатор согласия пациента
    • code - код типа согласия
    • name - наименование типа согласия
    • value - значение согласие числом (0-отказ, 1-согласен)
    • strValue - значение согласия строкой ("Да", "Нет")
    • date - дата регистрации согласия
    • endDate - дата окончания действия согласия
    • representerClientId - идентификатор подписавшего согласия, если это не сам пациент
    • representer - ФИО подписавшего согласия, если это не сам пациент

При этом код:

{for: consent in client.consents}

{consent}

{end:}

в шаблоне печати выдаст все согласия пациента в виде
код_типа_согласия: значение_строкой

Квоты пациента: (client.quotas} (CClientQuotaInfo)

Класс CClientQuotaInfo (Данные о квотах пациента):

    • identifier - идентификатор
    • ticket - номер талона
    • type - тип квоты
    • stage - этап
    • directionDate - дата направления
    • freeInput - направившее ЛПУ (свободный ввод)
    • org - направившее ЛПУ
    • amount - количество квот
    • MKB - шифр МКБ
    • status - статус квоты
    • request - обращение (0 - первичное, 1 - повторное)
    • statement - показания к выделению квоты
    • registrationDate - дата регистрации квоты
    • endDate - дата окончания действия квоты
    • orgStructure - подразделение базового ЛПУ
    • regionCode - код направившего региона
    • discussion - согласование предоставления квоты

Класс "Прикрепление" CClientAttachInfo

Пример: {client.permanentAttach.org}

    • code: код прикрепления (строка)
    • name: наименование прикрепления (строка)
    • outcome: выбытие (логическое)
    • begDate: начало прикрепления
    • endDate: окончание прикрепления
    • org (COrgInfo): организация прикрепления
    • document (CClientDocumentInfo): документ подтверждающий прикрепление
    • orgStructure (COrgStructureInfo): подразделение прикрепления

Пример обращения ко всем прикреплениям в карточке пациента:

{for: attach in client.getAttaches(temporary=True)} {attach} {end:}

    • temporary=True: обращается к временным прикреплениям
    • temporary=False: обращается к постоянным прикреплениям

Полис: client.policy (CClientPolicyInfo)

    • тип: {client.policy.type}
    • вид: {client.policy.kind}
    • страхователь: {client.policy.insurer}
    • КЛАДР-код зоны обслуживания страховой компании {client.policy.insurer.areaRaw}
    • серия: {client.policy.serial}
    • номер: {client.policy.number}
    • название: {client.policy.name}
    • начальная дата: {client.policy.begDate}
    • конечная дата: {client.policy.endDate}
    • примечания: {client.policy.note}

Для явно указания типа страхования полиса вместо client.policy следует использовать:

    • client.compulsoryPolicy - полис ОМС
    • client.voluntaryPolicy - полис ДМС

Адрес регистрации: {client.regAddress} (CAddressInfo)

    • Рег-КЛАДР: {client.regAddress.KLADRCode}
    • Рег-КЛАДР улицы: {client.regAddress.KLADRStreetCode}
    • Рег-GUID FIAS улицы: {client.regAddress.FIASStreetGUID}
    • Рег-город: {client.regAddress.city}
    • Рег-улица: {client.regAddress.street}
    • Рег-дом: {client.regAddress.number}
    • Рег-корпус: {client.regAddress.corpus}
    • Рег-квартира: {client.regAddress.flat}
    • Рег-текст: {client.regAddress.freeInput}
    • Рег-район: {client.regAddress.district}
    • Рег-ОКАТО: {client.regAddress.ОКАТО}
    • Рег-Индекс: {client.regAddress.index}

Адрес проживания: {client.locAddress}

    • Прож-КЛАДР: {client.locAddress.KLADRCode}
    • Прож-КЛАДР улицы:{client.locAddress.KLADRStreetCode}
    • Прож-GUID FIAS улицы: {client.locAddress.FIASStreetGUID}
    • Прож-город: {client.locAddress.city}
    • Прож-улица: {client.locAddress.street}
    • Прож-дом: {client.locAddress.number}
    • Прож-корпус: {client.locAddress.corpus}
    • Прож-квартира: {client.locAddress.flat}
    • Прож-текст: {client.locAddress.freeInput}
    • Прож-район: { client.locAddress.district}
    • Прож-ОКАТО: { client.locAddress.ОКАТО}
    • Прож-Индекс: {client.locAddress.index}

Определение местности

Для определения местности в шаблоне печати можно применить следующее: 6. Местность: {:incity = (str(client.regAddress.KLADRCode)[8:11] == '000')} {if: incity} городская {else:} сельская{end:}

Принадлежность адреса к региону РФ: {client.regAddress.mainRegion}, {client.locAddress.mainRegion}

"Разделение" адреса на город, улицу, дом, квартиру

{client.regAddress.town + u", " + client.regAddress.street + u", д." + client.regAddress.number + u", корп." + client.regAddress.corpus + u", кв. " + client.regAddress.flat }

Занятость: {client.work}

    • занятость-орг.: {client.work.shortName}
    • занятость-должность: {client.work.post}
    • занятость-ОКВЕД: {client.work.OKVED}

Идентификация: {client.identification} ( CClientIdentificationInfo )

    • client.identification.byUrn['1'] -- вернёт идентификатор по коду из rbAccountingSystem

или пустую строку

    • str(client.identification) -- вернёт строку с разными идентификаторами (типа Единый полис (1): 7801983056802872, Идентификатор ЕИС РПФ (2): 18951363 )
    • {for: code, ident in client.identification.iteritems()} ... {:end} -- цикл по парам (код, идентификатор)
    • client.identification.byCode -- вернёт словарь с отображением код->идентификатор (этот словарь лежит в основании client.identification)
    • client.identification.nameDict -- вернёт словарь с отображением код->название,может быть полезно для заголовков.

Такой же механизм можно использовать для классов COrgIdentificationInfo и CPersonIdentificationInfo.

Если не знаем кода, но знаем urn:

{for: (code, urn) in currentOrganisation.identification.byUrn.items()}

{if: urn == u'urn:oid:1.2.643.5.1.13.2.1.1.178'}

{code}

{end:}

{end:}

Второй способ получения идентификатора по urn из rbAccountingSystem

    • .identify

Пример получения идентификатора по справочнику должностей oid:1.2.643.5.1.13.13.11.1002:

{action.person.post.identify('urn:oid:1.2.643.5.1.13.13.11.1002')

Работает для следующих объектов и классов:

    • rbBloodType CBloodTypeInfo
    • rbContainerType CContainerTypeInfo
    • rbDiagnosticResult CDiagnosticResultInfo
    • rbDiseaseCharacter CCharacterInfo
    • rbDispanser CDispanserInfo
    • rbDocumentType CDocumentTypeInfo
    • rbEventTypePurpose CPurposeInfo
    • rbFinance CFinanceInfo
    • rbHospitalBedProfile CHospitalBedProfileInfo
    • rbMedicalAidProfile CMedicalAidProfileInfo
    • rbMedicalAidType CMedicalAidTypeInfo
    • rbMetastasis CMetastasisInfo
    • rbNodus CNodusInfo
    • rbNomenclature CNomenclatureInfo
    • rbPost CPostInfo
    • rbService CServiceInfo
    • rbSocStatusType CSocStatusType,CClientSocStatusInfo
    • rbSpeciality CSpecialityName
    • rbSpecimenType CSpecimentTypeInfo
    • rbTNMphase CTNMphaseInfo
    • rbTempInvalidReason CTempInvalidReasonInfo
    • rbTempInvalidResult CTempInvalidResultInfo
    • rbTissueType CTissueTypeInfo
    • rbTraumaType CTraumaTypeInfo
    • rbTumor CTumorInfo
    • rbUnit CUnitInfo
    • rbVisitType CVisitTypeInfo
    • rbRelationType CRelativeIdentificationInfo
    • rbNomenclatureActiveSubstance CNomenclatureActiveSubstanceInfo
    • rbNomenclatureUsingType CNomenclatureUsingTypeInfo

Связи пациента: {client.relations} (список)

    • rel. client (CClientInfo) связанный пациент
    • rel. relative (CClientInfo) сам пациент
    • rel. identification (CRelativeIdentificationInfo) Идентификация связи
    • rel.role: Строка, leftName или rightName в зависимости от "направления" связи
    • rel.otherRole: Строка, "другое" имя
    • rel.name: Строка, role -> otherRole; добавлено для "совместимости" с интерфейсом
    • rel.other: ClientInfo связанного клиента
    • rel.code: Строка, соотв. коду из rbRelationType
    • rel.regionalCode: Строка, regionalCode или regionalReverseCode из rbRelationType смотря по направлению связи
    • rel.isDirectGenetic: Логическое, isDirectGenetic или isBackwardGenetic из rbRelationType смотря по направлению связи
    • rel.isBackwardGenetic: Логическое, аналогично
    • rel.isDirectRepresentative: Логическое, аналогично
    • rel.isBackwardRepresentative: Логическое, аналогично
    • rel.isDirectEpidemic: Логическое, аналогично
    • rel.isBackwardEpidemic: Логическое, аналогично
    • rel.isDirectDonation: Логическое, аналогично
    • rel.isBackwardDonation: Логическое, аналогично

Например. Связи:

{if: client.relations}

rel

rel.role

rel.otherRole

rel.name

rel.other

rel.code

rel.regionalCode

rel.isDirectGenetic

rel.isBackwardGenetic

rel.isDirectRepresentative

rel.isBackwardRepresentative

rel.isDirectEpidemic

rel.isBackwardEpidemic

rel.isDirectDonation

rel.isBackwardDonation

{for: rel in client.relations}

{rel}

{rel.role}

{rel.otherRole}

{rel.name}

{rel.other}

{rel.code}

{rel.regionalCode}

{rel.isDirectGenetic}

{rel.isBackwardGenetic}

{rel.isDirectRepresentative}

{rel.isBackwardRepresentative}

{rel.isDirectEpidemic}

{rel.isBackwardEpidemic}

{rel.isDirectDonation}

{rel.isBackwardDonation}

{end:}

{else:}

связей нет

{end:}

Аллергия: (CClientAllergyInfo)

{for: allergy in client.allergies}

    • Название: {allegy.name} (строка)
    • Сила: {allergy.power} (число)
    • Дата: {allergy.date} (CDateInfo)
    • Примечания: {allergy.notes} (строка)

Лекарственная непереносимость: (CClientIntoleranceMedicamentInfo)

{for: intolerance in client.intolerances}

    • Название: {intolerance.name} (строка)
    • Сила: {intolerance.power} (число)
    • Дата: {intolerance.date} (CDateInfo)
    • Примечания: {intolerance.notes} (строка)

Вредность и факторы

{if:client.work.hurts}

{for: i, hurt in enumerate(client.work.hurts)}

Вредность номер {i+1}: код: {hurt.code}, наименование: {hurt.name}, стаж: {hurt.stage}, строка: {hurt},

{if: hurt.factors}

{for: j, factor in enumerate(hurt.factors)}

фактор № {j+1}, код:{factor.code}, наименование:{factor.name}

{end:}

{else:}

факторов нет

{ end:}

{ end:}

{else:}

вредности нет

{end:}

Соц.статусы: {client.socStatuses}

client.socStatuses (CClientSocStatusInfoList) - массив соц. статусов. Элемент соц.статуса (CClientSocStatusInfo) имеет параметры:

    • code
    • name
    • document
    • begDate
    • endDate
    • classes - массив классов элемента соц. статуса (CSocStatusClassInfoList)
    • identify('urn справочника')

Элемент класса соц.статуса (CSocStatusClassInfo) имеет параметры:

    • code
    • name
    • group
    • Список статусов

{if:len(client.socStatuses)}

{for: s in client.socStatuses}

{s.code}  {s.name}    {s}          {s.identify('urn:oid:1.2.643.5.1.13.13.11.1050')}

код       имя       всё       идентификатор по справочнику 1.2.643.5.1.13.13.11.1050

{end:}

{end:}

    • Проверка наличия соц.статуса

{if:len(client.socStatuses)}

Л

{else:}

Х

{end:}

    • Выбор кода соц.статуса
    1. последний в списке {client.socStatuses[-1].code} 2. первый в списке {client.socStatuses[0].code}

Документ подтверждающий соц.статус:

    • client.socStatuses[i].document (CClientDocumentInfo):
    • type - тип документа (CDocumentTypeInfo)
    • serial - серия документа
    • number - номер документа
    • date - дата выдачи документа
    • origin - орган выдавший документ

Прививочная карта пациента.

{for: vaccination in client.vaccinations}

    • {vaccination} - прививка
    • {vaccination.vaccine} - описание вакцины
    • {vaccination.datetime} - дата вакцинации
    • {vaccination.dose} - доза
    • {vaccination.seria} - серия
    • {vaccination.person} - исполнитель
    • {vaccination.reaction} - реакция
    • {vaccination.transitionType} - тип перехода/дополнительно
    • {vaccination.relegateOrg} - направитель
    • {vaccination.infections} - список инфекций
    • {vaccination.vaccineationType} - тип вакцинации

{end:}

Данные о событии пациента

Существует параметр clientEvents - это массив из событий. По каждому элементу массива можно получить все данные о событии

Эпидемиологичеcкий случай пацинета

Класс CClientEpidCaseInfo содержит следуюшие элементы:

    • id - идентификатор
    • MKB - шифр МКБ
    • number - эпид. номер
    • redDate - дата присвоения эпид. номера
    • regPerson - лицо, зарегистрировавшее эпид. номер
    • endDate - дата завершения эпид. случая
    • note - примечание

В класс CClientInfo добавлено свойство epidCases.

Пример использования:

{for: case in client.epidCases}

{case.number}

{end:}

Сотрудник person (CPersonInfo)

    • код: {person.code} (строка)
    • какой-то федеральный код: {person.federalCode} (строка)
    • какой-то региональный код: {person.regionalCode} (строка)
    • фамилия: {person.lastName} (строка)
    • имя: {person.firstName} (строка)
    • отчество: {person.patrName} (строка)
    • фамилия, имя, отчество: {person.longName} (строка)
    • фамилия и.о.: {person.shortName} (строка)
    • кабинет: {person.office} (строка)
    • должность: {person.post} (CPostInfo)
    • специальность: {person.speciality} (CSpecialityInfo)
    • место работы: {person.organisation} (COrgInfo)
    • организационная структура: {person.orgStructure} (COrgStructureInfo)
    • имя для входа в систему: {person.login} (строка)
    • список кадровых перемещений: {person.orders} (CPersonOrderInfo)
    • ученая степень сотрудника {person.academicDegree}

Например: начальник подразделения в котором работает сотрудник

{person.orgStructure.chief}

{person.orgStructure.chief if person.orgStructure else None}

Класс "Кадровые перемещения сотрудника" CPersonOrderInfo

    • date - дата перемещения
    • type - тип перемещения
    • typeAsString - название типа перемещения
    • documentDate - дата документа о перемещении
    • documentNumber - номер документа о перемещении
    • documentType - тип документа о перемещении (HL7)
    • validFromDate - дата начала действия перемещения
    • validToDate - дата окончания действия перемещения
    • orgStructure - подразделение
    • post - должность

Класс "Квалификация сотрудника" (CEducationInfoList)

У person (CPersonInfo) есть параметр {educations}, с помощью которого можно получить информацию по квалификации сотрудника. Пример использования:

{for: education in event.setPerson.educations}

{education.documentType} - тип документа (CDocumentInfo)

{education.serial} - серия

{education.number} - номер

{education.date} - дата

{education.origin} - организация

{education.status} - статус

{education.validFromDate} - действительно с даты

{education.validToDate} - действительно по дату

{education.speciality} - специальность (CSpecialityInfo)

{end:}

Класс "Вид деятельности сотрудника"

{for: activity in person.activities}

{activity.code}

{activity.name}

{activity.regionalCode}

{activity.note}

{end:}

Справочник "Старые фамилии"

Для шаблонов печати реализован доступ к справочнику старых фамилий, через внешнюю учетную систему "Старые фамилии", с кодом "OldSurname". Данные указываются на вкладке Идентификация в карте сотрудника.

{getShortName(byDate=None, code='OldSurname')}

{getFullName(byDate=None, code='OldSurname')}

Параметр byDate может принимать значения:

{event.execDate} - дата выполнения события

{action.begDate} - дата начала действия

{action.endDate} - дата окончания действия

{action[u'Name'].value} - дата из свойства с именем Name

Услуга (профиль оплаты) service (CServiceInfo)

Элемент справочника, имеющий свойства code и name и, кроме того, свойства:

    • унаследовано из ЕИС: {service.eisLegacy} (логический); пример: {visit.service.eisLegacy}
    • признак необходимости лицензии: {service.license} (строка)
    • ИНФИС-код: {service.infis} (строка)
    • дата начала: {service.begDate} (CDateInfo)
    • дата окончания: {service.endDate} (CDateInfo)

Посещение (визит)

visit (CVisitInfo), имеет свойства:

    • Тип визита: {visit.type} (справочник CVisitTypeInfo)
    • Назначенная дата: {visit.date} (CDateInfo)
    • Врач: {visit.person } (CPersonInfo)
    • Место выполнения визита: {visit.scene} (справочник CSceneInfo)
    • Признак первичности: {visit.isPrimary} (1 - первичный, 2 - повторный)
    • Источники финансирования: {visit.finance} (справочник CFinanceInfo)
    • Услуга (профиль ЕИС): {visit.service} (CServiceInfo)
    • Флаги финансирования: {visit.payStatus} (целое число)

Вкладка визиты (контекст visitsList)

Доступна печать фильтров информации из фильтров. Пример:

Дата визита:

с {if: filterVisitBegDate}{filterVisitBegDate}{end:} {if: filterVisitBegTime}{filterVisitBegTime}{end:}

по {if: filterVisitEndDate}{filterVisitEndDate}{end:} {if: filterVisitEndTime }{filterVisitEndTime}{end:}

Подразделение исполнителя: {if: filterVisitExecSetOrgStructure}{filterVisitExecSetOrgStructure}{end:}

Специальность исполнителя: {if: filterVisitExecSetSpeciality}{filterVisitExecSetSpeciality}{end:}

Исполнитель: {if: filterVisitExecSetPerson }{filterVisitExecSetPerson}{end:}

Ассистент: {if: filterVisitAssistant }{filterVisitAssistant}{end:}

Тип финансирования: {if:filterVisitFinance }{filterVisitFinance}{end:}

Услуга: {if: filterVisitService}{filterVisitService}{end:}

Место: {if: filterVisitScene}{filterVisitScene}{end:}

Автор: {if: filterVisitCreatePersonEx}{filterVisitCreatePersonEx}{end:}

Дата создания:

с {if: filterVisitBegCreateDateEx}{filterVisitBegCreateDateEx}{end:}

по {if :filterVisitEndCreateDateEx}{filterVisitEndCreateDateEx}{end:}

Автор последнего изменения: {if: filterVisitModifyPersonEx }{filterVisitModifyPersonEx}{end:}

Дата последнего изменения:

c {if: filterVisitBegModifyDateEx }{filterVisitBegModifyDateEx}{end:}

по {if: filterVisitEndModifyDateEx}{filterVisitEndModifyDateEx}{end:}

Оплата: {if: filterVisitPayStatusCodeEx}{filterVisitPayStatusCodeEx}{end:} {if: filterVisitPayStatusFinanceEx}{filterVisitPayStatusFinanceEx}{end:}

Обращение {event} (CEventInfo)

    • Тип обращения: {event.eventType} (CEventTypeInfo)
    • Назначение типа обращения; цель: {event.eventType.purpose} (CPurposeInfo)
    • Тип финансирования: {event.eventType.finance} (CFinanceInfo)
    • Базовый сервис ОМС: {event.eventType.service} (CServiceInfo)
    • Имя контекста печати: {event.eventType.printContext} (строка)
    • Внешний идентификатор/Номер документа: {event.externalId} (строка)
    • Организация: {event.org} (COrgInfo)
    • Клиент: {event.client} (CclientInfo)
    • Код карточки: {event.id} (строка)
    • Контракт: {event.contract} (CContractInfo)
    • Дата предыдущего обращения: {event.prevEventDate} (CDateInfo)
    • Дата назначения: {event.setDate} (CDateInfo)
    • Кем назначен: {event.setPerson} (CPersonInfo)
    • Дата выполнения: {event.execDate} (CDateInfo)
    • Выполнил: {event.execPerson} (CPersonInfo)
    • Признак первичности: {event.isPrimary} (1-первичный, 2-повторный, 3-активное посещение, 4-перевозка)
    • Порядок наступления: {event.order} (0-плановый, 1-экстренный, 2-самотёком, 3-принудительный) и т.д.
    • Результат обращения: {event.result} (CResultInfo)
    • Дата следующего обращения: {event.nextEventDate} (CDateInfo)
    • Флаги финансирования: {event.payStatus} (целое)
    • Тип актива: {event.typeAsset} (CEmergencyTypeAssetInfo)
    • Примечания: {event.note} (строка)
    • Куратор: {event.curator} (CPersonInfo)
    • Ассистент: {event.assistant} (CPersonInfo)
    • Мероприятия: {event.actions} (CActionInfoList)
    • Диагнозы: {event.diagnosises} (CDiagnosticInfoList)
    • Описание диагноза: {event.diagnosises.freeInput} Для вывода описания каждого диагноза необходимо использовать цикл по {event.diagnosises}
    • Посещения: {event.visits} (CVisitInfoList)
    • Листы временной нетрудоспособности с begDate по endDate: {event.getTempInvalidList(begDate, endDate)} (CTempInvalidListInfo)
    • МЭС: {event.mes} (CMesInfo )
    • Особенности выполнения МЭС: {event.mesSpecification} (CMesSpecificationInfo )
    • Модель пациента: {event.patientModel} (строка)
    • Лицо по уходу, объект CClientInfo (доступны данные, которые есть у пациента): event.relative
    • Тип квоты модели пациенты {event.patientModel.quotaType} (CQuotaTypeInfo )
    • Вид лечения: {event.cureType} (строка)
    • Метод лечения: {event.cureMethod} (строка)
    • Вид медицинской помощи {event.eventType.medicalAidKind}
    • Профиль медицинской помощи {event.medicalAidProfile}
    • Предшествующее событие - {event.prevEvent} (CEventInfo)
    • Автор записи: {event.createPerson} {CPersonInfo}
    • Автор изменений: {event.modifyPerson} {CPersonInfo}
    • Имеются ли не сохраненные изменения в Событии: {event.isDirty}
    • Направитель (организация) (вкладка Примечания): {event.relegateOrg}
    • Номер направления(вкладка Примечания): {event.srcNumber}
    • Дата направления(вкладка Примечания): {event.srcDate}
    • Длительность (стат.учет) {:ED = event.execDate if event.execDate else currentDate()}

{:delta = ED.date.toJulianDay() - event.setDate.date.toJulianDay()} {:duration = str(delta).split()[0]}

Параметры требования МЭС

    • Код - {event.mes.code}
    • Наименование - {event.mes.name}
    • Описание - {event.mes.descr}
    • Сервис - {event.mes.service}
    • Признак активности - {event.mes.active}
    • Признак внутренний это МЭС или нет - {event.mes.internal}
    • Группа - {event.mes.group}
    • Минимальная длительность - {event.mes.min}
    • Максимальная длительность - {event.mes.max}
    • Средняя длительность - {event.mes.avg}
    • Модель пациента - {event.mes.patientModel}
    • Норматив визитов - {event.mes.norm}
    • Периодичность в днях - {event.mes.periodicity}
    • Группа КСГ- {event.mes.ksg}
    • Дата окончания действия - {event.mes.endDate}
    • Признак Политравма - {event.mes.isPolyTrauma}
    • Заболевания, входящие в МЭС (в формулировках МКБ):

{for: i, mkb in enumerate(event.mes.MKB)}

{mkb.code} - код диагноза по МКБ

{mkb.name} - наименование МКБ

{mkb.exCode} - код доп. диагноза по МКБ

{mkb.exName} - наименование доп. диагноза по МКБ

{mkb.grouping}

{mkb.blending} - сочетаемость (0-основной и дополнительный,1-основной,2-дополнительный)

{end:}

    • Оказанные услуги (мероприятия):

{for: i, serviceType in enumerate(event.mes.serviceTypes)}

{serviceType.groupCode} - код группировки услуг

{serviceType.groupName} - наименование группировки услуг

{serviceType.code} - код услуги

{serviceType.name} - наименование услуги

{serviceType.doctorWTU} - УЕТ врача

{serviceType.paramedicalWTU} - УЕТ средний

{serviceType.averageQnt} - среднее кол-во предоставления услуги (кратность) пациенту за период госпитализации

{serviceType.necessity} - частота предоставления услуги (потребность) в рамках настоящего стандарта

{serviceType.binding} - признак объединения услуг в единую технологическую совокупность

{serviceType.sex} - пол (0-не определено, 1-М, 2-Ж)

{serviceType.begAgeUnit} - применимо для минимального возраста (0-любой, 1-Д, 2-Н, 3-М, 4-Г)

{serviceType.minimumAge} - минимальный возраст (yy-mm-dd)

{serviceType.endAgeUnit} - применимо для максимального возраста (0-любой, 1-Д, 2-Н, 3-М, 4-Г)

{serviceType.maximumAge} - максимальный возраст (yy-mm-dd)

{serviceType.controlPeriod} - период контроля (0-Текущая дата, 1-Конец текущего года, 2-Конец предыдущего года)

{end:}

    • Услуги лечащего и консультирующего врача (ВИЗИТЫ):

{for: i,visit in enumerate(event.mes.visitTypes)}

{visit.name} - наименование

{visit.specialityName} - наименование специальности

{visit.serviceCode} - услуга

{visit.additionalServiceCode} - дополнительный код услуги

{visit.altAdditionalServiceCode} - альтернативный доп. код

{visit.groupCode} - группировка визитов

{visit.averageQnt} - среднее кол-во визитов (кратность) за период госпитализации

{visit.sex} - пол (0-не определено, 1-М, 2-Ж)

{visit.begAgeUnit} - применимо для минимального возраста (0-любой, 1-Д, 2-Н, 3-М, 4-Г)

{visit.minimumAge} - минимальный возраст (yy-mm-dd)

{visit.endAgeUnit} - применимо для максимального возраста (0-любой, 1-Д, 2-Н, 3-М, 4-Г)

{visit.maximumAge} - максимальный возраст (yy-mm-dd)

{visit.controlPeriod} - Период контроля (0-Текущая дата, 1-Конец текущего года, 2-Конец предыдущего года)

{end:}

Вкладка Обращение (контекст печати eventsList)

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

{filter.eventType} - тип события

{filter.eventBegSetDate} - начальная дата периода назначения

{filter.eventBegSetTime} - начальное время периода назначения

{filter.eventEndSetDate} - конечная дата периода назначения

{filter.eventEndSetTime} - конечное время периода назначения

{filter.eventBegExecDate} - начальная дата периода выполнения

{filter.eventBegExecTime} - начальное время периода выполнения

{filter.eventEndExecDate} - конечная дата периода назначения

{filter.eventEndExecTime} - конечное время периода назначения

{filter.eventOrgStructure} - подразделение

{filter.eventSpeciality} - специальность

{filter.eventPerson} - врач.

Данных по тарифу КСГ:

{for: csg in event.csgList}

{:csg.service.prepareTariff(event.contract.id, event.client.id)}

{csg.service.tariff}

{end:}

Вызов зубной формулы (CTeethEventInfo) (для формы ввода ф.043)

    • { write(event.stomat) } - нарисовать стоматологическую таблицу
    • { write(event.parodent) } - нарисовать пародентологическую таблицу

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

    • {write(event.stomatchildfull)} - нарисовать стоматологическую таблицу для ребенка
    • {write(event.parodentchildfull)} - нарисовать пародентологическую таблицу для ребенка

Вызов скорой помощи event (CEmergencyEventInfo)

Имеет те же свойства, что и CEventInfo и, кроме того, свойства:

    • Номер карты вызова: {event.numberCardCall} (строка)
    • Номер бригады: {event.brigade} (CEmergencyBrigadeInfo)
    • Повод к вызову: {event.causeCall} (CEmergencyCauseCallInfo)
    • Кто вызывал: {event.whoCallOnPhone} (строка)
    • Телефон: {event.numberPhone} (строка)
    • Время начала: {event.begDate} (CDateTimeInfo)
    • Время передачи бригаде: {event.passDate} (CDateTimeInfo)
    • Время выезда: {event.departureDate} (CDateTimeInfo)
    • Время прибытия: {event.arrivalDate} (CDateTimeInfo)
    • Время окончания обслуживания: {event.finishServiceDate} (CDateTimeInfo)
    • Время возвращения на станцию: {event.endDate} (CDateTimeInfo)
    • Место получения вызова: {event.placeReceptionCall} (CEmergencyPlaceReceptionCallInfo)
    • Вызов получен: {event.receivedCall} (CEmergencyReceivedCallInfo)
    • Причина задержки: {event.reasondDelays} (CEmergencyReasondDelaysInfo)
    • Результат: {event.resultCall} (CEmergencyResultInfo)
    • Несчастный случай: {event.accident} (CEmergencyAccidentInfo)
    • Смерть: {event.death} (CEmergencyDeathInfo)
    • Опьянение: {event.ebriety} (CEmergencyEbrietyInfo)
    • Больной: {event.diseased} (CEmergencyDiseasedInfo)
    • Место вызова: {event.placeCall} (CEmergencyPlaceCallInfo)
    • Способ транспортировки: {event.methodTransport} (CEmergencyMethodTransportInfo)
    • Транспортировку перенес: {event.transfTransport} (CEmergencyTransferTransportInfo)
    • Отказ от госпитализации: {event.renunOfHospital} (логический)
    • Лицо отказа от госпитализации: {event.faceRenunOfHospital} (строка)
    • Заболевание: {event.disease} (логический)
    • Роды: {event.birth} (логический)
    • Патология беременности: {event.pregnancyFailure} (логический)
    • Примечание: {event.noteCall} (строка)

Констатация смерти event

Имеет те же свойства, что и CEventInfo и, кроме того, свойства:

    • Смерть наступила: {event.deathPlaceType} (CDeathPlaceTypeInfo, есть поля code и name)
    • Смерть произошла: {event.deathCauseType} (CDeathCauseTypeInfo, поля code и name)
    • Причины смерти установлены: {event.employeeTypeDeterminedDeathCause} (CEmployeeTypeDeterminedDeathCauseInfo, поля code и name)
    • Основание: {event.groundsForDeathCause} (CGroundsForDeathCauseInfo, поля code и name)
    • Адрес места смерти (КЛАДР): {event.deathAddress} (CAddressInfo)
    • Адрес места смерти (свободный ввод): {event.deathAddressFreeInput } (строка)

Диагноз (ЛУД)

Представляется экземплярами CDiagnosisInfo. У экземпляра CDiagnosisInfo есть свойства:

    • type (CDiagnosisTypeInfo) - тип диагноза,
    • MKB (CMKBInfo) - диагноз,
    • MKBEx (CMKBInfo) - классификация по 5-му знаку,
    • exSubclassMKB (CDiagnosisInfo и CDiagnosticInfo) - расширенная субклассификация МКБ,
    • character (CCharacterInfo) - характер,
    • dispanser (CDispanserInfo) - диспансерное наблюдение,
    • traumaType (CTraumaTypeInfo) - травма,
    • person (CPersonInfo) - врач,
    • setDate (CDateInfo) - дата начала,
    • endDate (CDateInfo) - дата окончания
    • CDagnosisTypeInfo, CCharacterInfo, CDispanserInfo, CTraumaTypeInfo - суть представление элементов различных справочников, и предоставляют свойства code и name (оба - строки). Когда значение приводится к строке используется свойство name.
    • CDispanserInfo также предоставляет свойство observed (boolean)
    • CMKBInfo - есть свойства code, morphologyMKB и descr (строки). Когда значение приводится к строке, используется свойство code. morphologyMKB

Диагноз (Случай обслуживания)

{event.diagnosises}. У экземпляра diagnosises есть те же свойства, что у диагноза ЛУД и, кроме того:

    • stage (CStageInfo)
    • sanatorium (boolean),
    • hospital (boolean),
    • speciality (CSpecialityInfo),
    • healthGroup (CHealthGroupInfo),
    • result (CResultInfo),
    • phase
    • notes (строка)
    • CStageInfo, CHealthGroupInfo - суть также представление элементов различных справочников, которые предоставляют свойства code и name.
    • TNMS
    • MKBAdditional (CMKBAdditionalInfo) - Дополнительная субклассификация МКБ. Имеет свойства: code, name

Журнал хранения учетных документов

Информация о текущем местонахождении учетного документа {event.documentLocation}:

    • location
    • docDate
    • docTime
    • person
    • note

Журнал отложенной записи

Контекст печати: suspendedAppointmentList.

    • data = { 'suspendedAppointmentList': suspenedAppointmentInfoList; 'suspendedAppointment' : suspenedAppointmentInfo }
    • Классы контекста: CSuspendedAppointmentInfoList, CSuspendedAppointmentInfo, CScheduleItemInfo, CScheduleInfo.

Тип действия (статус, мероприятие, диагностика, лечение, и.т.п.)

action (CActionTypeInfo), имеет свойства:

    • класс: {action.class_} (0 - статус, 1 - диагностика, 2 - лечение, 3 - прочие мероприятия)
    • группа типов: {action.group} (CActionTypeInfo)
    • код мероприятия: {action.code} (строка)
    • уникальный "плоский" код мероприятия: {action.flatCode} (строка)
    • название мероприятия: {action.name} (строка)
    • название мероприятия для печати: {action.title} (строка)
    • услуга: {action.service} (CServiceInfo)
    • имеет ли значение время мероприятия: {action.showTime} (логический)
    • подразделения за которыми закреплено действие {action.orgStructure} (список из COrgStructureInfo)

<strongid="t917">Действие (статус, мероприятие, диагностика, лечение, и.т.п.)

action (CActionInfo), имеет те же свойства, что и CActionTypeInfo и, кроме того, свойства:

    • статус выполнения: {action.status} (0 - начато, 1 - ожидание, 2 - закончено, 3 - отменено, 4 - Без результата, 5 - Назначено)
    • дата направления: {action.directionDate} (CDateTimeInfo)
    • дата начала: {action.begDate} (CDateTimeInfo)
    • плановая дата выполнения: {action.plannedEndDate} (CDateTimeInfo)
    • дата выполнения: {action.endDate} (CDateTimeInfo)
    • исполнитель: {action.person} (CPersonInfo)
    • ученая степень врача, выполнившего действие {action.person.academicDegree}
    • назначивший: {action.setPerson} (CPersonInfo)
    • ученая степень врача, назначившего действие {action.setPerson.academicDegree}
    • кабинет: {action.office} (строка)
    • тип финансирования: {action.finance } (CFinanceInfo)
    • цена: {action.price} (вещественное число)
    • количество: {action.amount} (вещественное число)
    • примечание: {action.note} (строка)
    • имя контекста печати для действия: {action.getPrintTemplateContext(...)} (строка)
    • свойство: {action[...]} (CPropertyInfo); пример: {action[u'рост']}
    • имеются ли не сохраненные изменения в Действии: {action.isDirty}
    • Количество процедур: {action.quantity}
    • Длительность: {action.duration}
    • Интервал: {action.periodicity}
    • Кратность: {action.aliquoticity}
    • Особенность выполнения действия: {action.specification.code}, {action.specification.name}
    • У экземпляра действия также есть параметр serviceType {action.serviceType} - вид услуги (например, первичный осмотр, лабораторные исследования, операция и тд)

Выводит целочисленное значение от 0 до 11, соответствующее виду услуги. Расшифровка значений: 0-Прочие, 1-первичный осмотр, 2-повторный осмотр, 3-процедура/манипуляция, 4-операция, 5-исследование, 6-лечение, 7-профилактика, 8-анестезия, 9-реанимация, 10-лабораторное исследование, 11-опрос'

Свойства действия

    • рост: { action[u'Рост'] }/{ action[u'Рост'].value }/{ action[u'Рост'].unit }/{ action[u'Рост'].norm }
    • вес: { action[u'Вес'] }/{ action[u'Вес'].value }/{ action[u'Вес'].unit }/{ action[u'Вес'].norm }
    • {action.name} - цикл по свойствам

{for: prop in action}

{prop.name}: {prop.value}/{prop.unit}/{prop.norm}

{end:}

    • {action.name} - цикл по номерам свойств

{for: i in xrange(len(action))}

{if: i == action.currentPropertyIndex} {end:}

{i+1}) {action[i].name}: {action[i].value}/{action[i].unit}/{action[i].norm}

{if: i == action.currentPropertyIndex} {end:}

{end:}

    • {action.name} - цикл по свойствам с фильтром

{:l = [x for x in action if x.value]}

{for: i,prop in enumerate(l)}

{i}) {prop.name}: {prop.value}/{prop.unit}/{prop.norm}

{end:}

{for: i,prop in enumerate([x for x in action if x.value])}

{i}) {prop.name}: {prop.value}/{prop.unit}/{prop.norm}

{end:}

    • количество действий: { len(actions)}

{for: i,a in enumerate(actions)}

{if: i == currentActionIndex}{end:}

{i}/{a.code}/{a.name}/{len(a)}

{if: i == currentActionIndex}{end:}

{end:}

    • отображение значения свойства с типом html с обработкой тегов (может потребоваться для вывода таблицы)

{prop.value:h}

    • параметр «Пол» свойства Действия, настраиваемый в типе действия {prop.sex}
    • параметр «Тест» свойства Действия, настраиваемый в типе действия {prop.test}
    • для ряда свойств, ссылающихся на записи в справочниках МИС, добавлена возможность отобразить в шаблоне печати данные таких записей

тип "Действующее вещество ЛСиИМН" (CNomenclatureActiveSubstanceInfo):

{prop.value.code} - код действующего вещества ЛСиИМН (далее - ДВ)

{prop.value.name} - наименование ДВ

{prop.value.unit} - единица измерения ДВ (CUnitInfo)

{prop.value.identify('urn справочника')} - идентификатор ДВ по справочнику с указанным urn

тип "Способ применения ЛСиИМН" (CNomenclatureUsingTypeInfo):

{prop.value.code} - код способа применения ЛСиИМН (далее - СП)

{prop.value.name} - наименование СП

{prop.value.identify('urn справочника')} - идентификатор СП по справочнику с указанным urn

КСГ, применённая в действии

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

У действия (CActionInfo) есть параметр csg, у которого, в свою очередь, есть следующие параметры:

    • {action.csg.begDate} - дата начала
    • {action.csg.endDate} - дата окончалия
    • {action.csg.MKB} - код МКБ
    • {action.csg.CSGCode} - код КСГ
    • {action.csg.amount} - количество
    • {action.csg.payStatus} - статус оплаты

Биоматериал, связанный с действием

{action.takenTissueJournal} (CtakenTissueJournalInfo):

    • datetimeTaken - дата забора биоматериала
    • execPerson (CPersonInfo) - регистратор забора
    • tissueType - тип биоматериала:
    • externalId - идентификатор в журнале(суточный)
    • amount - количество биоматериала
    • note - примечание

Класс «Услуги/Квотирование» - справочник Типы действий/вкладка Услуги/Квотирование:

{for: action in event.actions}

{for: quotaType in action.quotaType}

{quotaType.quotaClass}

{quotaType.quotaType.name}

{quotaType.quotaType.code}

{quotaType.financeId}

{end:}

{end:}

Печать шаблона в редакторе действия

В случае, когда из редактора действия необходимо распечатать шаблон, содержащий обращение к другим действиям события, необходимо в шаблоне заменить все "event.actions" на "actions" и добавить в начало шаблона следующий код:

{:from PyQt4 import QtGui}

{:from library.PrintInfo import CInfoContext}

{:from Events.ActionInfo import CActionInfo}

{:records = QtGui.qApp.db.getRecordList('Action', 'id', 'Action.event_id = %d' % action.event.id)}

{:context = CInfoContext()}

{:actions = [CActionInfo(context, r.value('id').toInt()[0]) for r in records]}

Вкладка Обслуживание (контекст печати actionsList)

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

{filter.actionType.name} - тип действия

{filter.actionBegSetDate} - начальная дата периода назначения

{filter.actionEndSetDate} - конечная дата периода назначения

{filter.actionBegExecDate} - начальная дата периода выполнения

{filter.actionBegExecTime} - начальное время периода выполнения

{filter.actionEndExecDate} - конечная дата периода выполнения

{filter.actionEndExecTime} - конечное время периода выполнения

{filter.actionExecOrgStructure} - подразделение исполнителя

{filter.actionExecSpeciality} - специальность исполнителя

{filter.actionExecSetPerson} - исполнитель

{filter.actionExecSetAssistant} - ассистент

Информация о лекарстве

value (CRLSInfo), имеет свойства:

    • название вещества: {value.INPName} (строка); пример: {action[u"Выписано"].value.INPName}
    • название вещества по-латыни: {value.INPNameLat} (строка)
    • торговое название: {value.tradeName} (строка)
    • торговое название по-латыни: {value.tradeNameLat} (строка)
    • лекарственная форма: {value.form} (строка)
    • доза в единице лекарственной формы: {value.dosage} (строка)
    • фасовка: {value.filling} (строка)
    • упаковка: {value.packing} (строка)

value (CLSiIMNInfo), имеет свойства:

    • код: {value.code}
    • наименование: {value.name}
    • региональный код: {value.RegionalCode}
    • тип: {value.type}, имеет параметры code и name. (CLSiIMNTypeInfo)
    • наименование по МНН(Международное наименование ЛС): {value.internationalNonproprietaryName}
    • Производитель: {value.producer}
    • код по АТХ: {value.ATC}
    • объем упаковки: {value.packSize}
    • код по МНН(Международное наименование ЛС): {value.mnnCode}
    • код по ТРН(Торговое наименование ЛС): {value.trnCode}
    • дозировка: {value.dosageValue}
    • единица изменения дозировки: {value.dosageUnit} (rbUnit)
    • форма выпуска лекарственных препаратов: {value.lfForm} (rbLTForm)
    • дата включения: {value.inDate}
    • дата исключения: {value.exDate}
    • комплектность: {value.completeness}
    • Особенности ЛСиИМН: {features}. Представляет из себя словарь. Ключом словаря является name, значением - список value. (rbNomenclature_Feature)

Документ временной нетрудоспособности

tempInvalid (CTempInvalidInfo), имеет свойства:

    • тип документа: {tempInvalid.doctype} (0-листок нетрудоспособности, 1-справка)
    • причина нетрудоспособности: {tempInvalid.reason} (CRBInfo)
    • cерия документа: {tempInvalid.serial} (строка)
    • номер документа: {tempInvalid.number} (строка)
    • дата выдачи документа: {tempInvalid.issueDate} (CDateInfo)
    • пол: {tempInvalid.sex} (строка)
    • возраст: {tempInvalid.age} (строка)
    • продолжительность в днях: {tempInvalid.duration} (целое число)
    • продолжительность в днях с учётом внешних периодов: {tempInvalid.externalDuration} (целое число)
    • дата начала всего периода ВУТ: {tempInvalid.caseBegDate}
    • дата начала ЛВН: {tempInvalid.begDate} (CDateInfo)
    • дата окончания: {tempInvalid.endDate} (CDateInfo)
    • код диагноза последнего периода: {tempInvalid.MKB} (строка)
    • код доп. диагноза последнего периода: {tempInvalid.MKBEx} (строка)
    • результат:{if: tempInvalid.state == 0}Открыт {elif: tempInvalid.state == 1}Закрыт {elif: tempInvalid.state == 2}Продлен {elif: tempInvalid.state == 4}Аннулирован {else:} Передан {end:} (0-Открыт, 1-Закрыт, 2-Продлён, 3-Передан)
    • cтатус с точки зрения обмена с ФСС:

{if: blank.annulmentReason}Аннулирован

{elif: blank.fssStatus == 'P0'}Открыт

{elif: blank.fssStatus == 'P1'}Продлен

{elif: blank.fssStatus == 'P2'}Продлен

{elif: blank.fssStatus == 'R'}Закрыт

{elif: blank.fssStatus == 'M'} отправлен на МСЭ

{else:}

{end:}

      • Обращение к текущему ЛВН просто через {tempInvalid.<что-то>},
      • обращение к предыдущему - {tempInvalid.prev.<что-то>}
    • результат эпизода ВУТ - {tempInvalid.result}
    • Подписан ли результат эпизода ВУТ: {tempInvalid.isSigned}

Случай подписан - {u'Да' if tempInvalid.isSigned else u'Нет'}

CTempInvalidDocumentItemInfo, имеет свойства:

    • подписан ли документ (bool): {isSigned}
    • дата подписи: {signDate} (CDateInfo)
    • подписавший: {signPerson} (CPersonInfo)

Пример использования:

{for: p in tempInvalid.periods}

<div>{p.begDate} {p.endDate} - {if: p.isSigned}Подписан {p.signPerson} в {p.signDatetime} {else:}Не подписан{end:}</div>

{end:}

Информация о периодах ВУТ (CTempInvalidPeriodInfo)

{for: item in tempInvalid.periods}

{item.begDate}-дата начала периода нетрудоспособности

{item.endPerson}-врач

{item.endDate}-дата окончания периода нетрудоспособности

{item.isExternal} -флаг внешний

{item.regime} -режим

{item.chairPerson} - председатель ВК

{item.duration} - продолжительность периода в днях

{item.note} - примечание

{end:}

Список лиц по уходу «cares».
CTempInvalidDocumentCareInfo имеет свойства:

    • idx (число)
    • client (CClientInfo)
    • begDate (дата)
    • endDate (дата)
    • regime (CTempInvalidRegimeInfo)
    • MKB (строка)
    • reason (CTempInvalidReasonInfo)

Пример вывода:

{for: item in tempInvalid.items}

{for: care in item.cares}

<div>{care.client}: {care.begDate} - {care.endDate}</div>

{end:}

{end:}

Врачебная комиссия и направление на МСЭ

medicalCommission, имеет свойства:

{for: mse in expertise}

    • Дата начала действия: {mse.begDate}
    • Код действия: {mse.code}
    • Дата и время добавления создания действия: {mse.createDatetime}
    • Пользователь создавший действие: {mse.createPerson}
    • Дата назначения действия: {mse.directionDate}
    • Дата окончания действия: {mse.endDate}
    • Обращение к событию в котором находится действие: {mse.event} (CEventInfo)
    • Уникальный "плоский" код действия: {mse.flatCode}
    • Уникальный идентификатор документа в БД: {mse.id}
    • Дата и время последнего изменения: {mse.modifyDatetime}
    • Пользователь внесший последние изменения: {mse.modifyPerson}
    • Название действия: {mse.name}
    • Примечание действия: {mse.note}
    • Исполнитель действия: {mse.person}
    • Также можно обратиться к свойствам действия {for: prop in mse} (CPropertyInfo)

Выполнение работ

jobTickets (CJobTicketWithActionsInfo), элемент списка CJobTicket имеет свойства:

    • список Действий Работы: actions (СActionInfo)

Например:

jobTickets[i].actions[0].event.client

Вывод параметров фильтра (jobTicket_list)

    • Период c {filter.begDate} по {filter.endDate}
    • Работы: {', '.join([unicode(i) for i in filter.jobTypeList])}
    • Ожидающие: {filter.awaiting}
    • В очереди: {filter.enqueued}
    • Выполняемые: {filter.inProgress}
    • Законченные: {filter.done}
    • Только срочные: {filter.onlyUrgent}
    • Подразделение: {filter.orgStructure}
    • Специальность: {filter.speciality}
    • Врач: {filter.person}
    • Пол: {filter.sex}
    • Возраст от {filter.ageFrom} до {filter.ageTo} лет

Номерок на Работу

Ticket (СTicketInfo), имеет свойства:

    • datetime - дата и время номерка
    • idx - порядковый номер
    • jobType - (CjobTypeInfo) данные о типе Работы
    • jobPurpose - наименование назначения Работы
    • jobPurpose.code - код назначения Работы
    • orgStructure - (CorgStructureInfo) данные о подразделение в котором запланирована Работа
    • status - состояние Номерка
    • label - отмека в Номерке
    • note - примечание
    • begDateTime - плановое начало Работы
    • endDateTime - планове окончание Работы

Лист предварительной записи врача (График)

Вкладка "амбулаторный прием" контекст печати "ambQueue"
Вкладка "На дому" контекст печати "homeQueue"
В данных контекстах определены:

    • person: CPersonInfo - врач
    • {createPerson} - автор записи
    • setPersonId: CPersonInfo - поставивший в очередь
    • date: CDateInfo - дата на которую получаем список
    • office: строка - кабинет
    • timeRange: строка - период приёма
    • queue: список элементов CQueueInfo (очередь)

CQueueInfo :

    • time: CTimeInfo - время приёма (номерка)
    • checked: логическое - отметка
    • client: CClientInfo - пациент
    • complaints: строка - жалобы
    • recordDatetime: CDateTimeInfo - дата и время записи

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

<html>

<body>

Врач:{person}

Дата:{date} Кабинет:{office} Время приёма:{timeRange}

время

отметка

пациент

примечание

{for: i,q in enumerate(queue)}

{i}

{q.time if q.time else '-/-'}

{q.checked}

{q.client if q.client else '-/-'}

{q.complaints}

{end:}

</body>

Журнал кассовых операций

(CCashOperationInfo). Контекст печати - cashOrder. Переменные:

    • event: CEventInfo
    • client: ClientInfo,
    • date: CDateInfo (дата),
    • cashOperation: CCashOperationInfo,
    • sum: float,
    • cashBox:строка

Режим «Расчет» — «Журнал кассовых операций» контекст печати (cashBook):

{for: item in cashBook}

{item.event}

{item.client}

{item.date}

{item.cashOperation}

{item.sum}

{item.cashBox}

{end:}

Класс "Тип финансирования"

CFinanceInfo

    • code - код источника
    • name- название источника

Класс "Контракт"

CContractInfo

    • finance (CFinanceInfo) - тип финансирования
    • number - номер контракта
    • date - дата заключения контракта
    • recipient (COrgInfo) - получатель
    • payer (COrgInfo) - плательщик
    • resolution - основание
    • note - примечание
    • {contingent}- вкладка Контингент. Это список, у каждого элемента есть следующие параметры:

{for: cont in account.contract.contingent}

{cont.attachType} - Тип прикрепления (CAttachTypeInfo) (code/name)

{cont.attachOrg} - ЛПУ прикрепления

{cont.org} - Занятость (COrgInfo)

{cont.socStatusType} - Соц. Статус (CSocStatusType) (code/name)

{cont.insurer} - СМО (COrgInfo)

{cont.policyType} - Тип страхования (CRBPolicyTypeInfo) (code/name)

{cont.serviceArea} - Зона обслуживания

{cont.sex} - пол

{cont.age} - возраст

{end:}

    • {tariffs}- вкладка Тариф. Это список, у каждого элемента есть следующие параметры:

{for: tariff in account.contract.tariffs}

{tariff.service} - Услуга (CServiceInfo)

{tariff.batch} - Группа

{tariff.price} - Цена

{tariff.vat} - НДС

{tariff.age} - Возраст

{tariff.sex} - Пол

{tariff.unit} - Единица учета (rbUnit)

{end:}

Класс "Статьи затрат"

CContractCompositionExpenseInfo

    • percent - процент
    • sum - сумма
    • name - имя статьи затрат
    • code - код статьи затрат
    • isBase - является ли базовой статьей затрат

Пример:

<html>

<body>

{for: item in account.items}

<h1>{item}</h1>

<table border="1"> <tr> <th>Затрата </th>

<th>Процент </th>

<th>Сумма </th>

</tr>

{for: expense in item.tariff.compositionExpenses}

<tr>

<td>{expense.name} ({expense.code}) </td>

<td&gt{expense.percent}% </td>

<td>{expense.sum} </td>

</tr>

{end:}

</table>

{end:}

</body>

Класс "МЭС"

CMesInfo

    • code - код МЭС
    • name - название МЭС
    • descr

Класс "Особенности выполнения МЭС"

CMesSpecificationInfo

    • code - код результата выполнения МЭС
    • name - название результата выполнения МЭС
    • done - флаг выполнения МЭС (логическое значение .T. соответствует выполнению МЭС)

Класс "КСГ"

Данные о КСГ можно выводить из форм ввода и контекста eventList.

{for: csg in event.csgList}

{csg.begDate} - дата начала

{csg.endDate} - дата окончалия

{csg.MKB} - код МКБ

{csg.CSGCode} - код КСГ

{csg.amount} - количество

{csg.payStatus} - статус оплаты

{end:}

Контекст "feed" (Порционник)

{recordList} - массив, каждый элемент содержит в себе:

    • вид оплаты {finance}(CFinanceInfo)
    • период питания {mealTime}(CMealTimeInfo)
    • стол питания {diet}(CDietInfo)
    • флаг патрона {isPatron} - 1, если запись о питании патрона, где каждый элемент соответствует активной галочке в графах питания пациента и патрона

{dietList}(СInfoList) - содержит в себе список всех возможных столов

{mealTimeList}(CInfoList) - содержит в себе список всех возможных периодов питания

{financeList}(CInfoList) - содержит в себе список всех возможных видов оплаты

{clientsCount} - число пациентов всего

{clientsWithFeed} - число пациентов с назначенным питанием

{patronsCount} - число патронов всего

{patronsWithFeed} - число патронов с назначенным питанием

{orgStructure} - текущее подразделение

{reportDate} - дата, выбранная в диалоге печати

{reportType} - тип порционника, выбираемый в диалоге печати

Печать из "Стационарного монитора"

В контексты печати передается rows, который является массивом, состоящим из CEventInfo и словаря с доп.данными (dop). Также передаются данные фильтра {filter}.

Фильтр - словарь, состоящий из:

    • Дата начала - {filter.begDate}
    • Время начала - {filter.begTime}
    • Дата окончания - {filter.endDate}
    • Время окончания - {filter.endTime}
    • Поступили в - {filter.received}
    • Тип финансирования - {filter.finance}
    • Подразделение - {filter.orgStructure}
    • Признак закрытого или открытого события - {filter.eventCloseType}

Далее представлены контексты печати с соответствующими им доп.данными.

Вкладка "Присутствующие"

Контекст печати "mPresence".

    • Статус наблюдения пациента: код - {dop.observationCode}, имя - {dop.observationName}, цвет - {dop.observationColor}
    • Источник финансирования: {dop.finance}
    • Договор: {dop.contract}
    • Питание пациента: {dop.clientFeed} (номер стола)
    • Питание Патрона: {dop.patronFeed}
    • Комфортность: {dop.comfortableDate}
    • Койка: код койки - {dop.bedCode}, название койки - {dop.bedName}
    • Подразделение: {dop.orgStructure}

Вкладка "Поступили"

Контекст печати "mReceived".

    • Статус наблюдения пациента: код - {dop.observationCode}, имя - {dop.observationName}, цвет - {dop.observationColor}
    • Источник финансирования: {dop.finance}
    • Договор: {dop.contract}
    • Койка: код койки - {dop.bedCode}, название койки - {dop.bedName}
    • Питание пациента: {dop.clientFeed} (наличие или отсутствие)
    • Дата госпитализации: {dop.setDate}
    • Дата поступления: {dop.begDate}
    • Дата выбытия: {dop.endDate}
    • Подразделение: {dop.orgStructure}

Вкладка "Выбыли"

Контекст печати "mLeaved".

    • Статус наблюдения пациента: код - {dop.observationCode}, имя - {dop.observationName}, цвет - {dop.observationColor}
    • Источник финансирования: {dop.finance}
    • Договор: {dop.contract}
    • Койка: код койки - {dop.bedCode}, название койки - {dop.bedName}
    • Дата госпитализации: {dop.setDate}
    • Дата поступления: {dop.begDate}
    • Дата выбытия: {dop.endDate}
    • Подразделение: {dop.orgStructure}

Пример:

{for: event, dop in rows}

{event.client.fullName}

{dop.orgStructure}

{end:}

Счета

    • Плательщик по договору - {account.contract.payer}
    • Номер договора - {account.contract.number}, {account.number}
    • Дата договора - {account.contract.date}, {account.date}
    • Основание договора - {account.contract.resolution}
    • Реестр счёта (дата, пациент, стоимость) списком - {account.items}, {item.event}
    • Элемент реестра счета {account.payedSum}
    • Сумма по счёту - {account.sum}
    • Cсылка на новый элемент перевыставленного счета - {item.reexposeItem}
    • Ссылка из элемента перевыставленного счета на элемент предыдущего счета - {item.preexposeItem}
    • Применённые коэффициенты к элементы реестра счёта .

Пример использования:

{for: item in account.items}

{for: i in item.usedCoefficients}

{i[0]} - {i[1]} - {i[2]}

{end:}

{end:}

При этом: {i[0]} - группа, {i[1]} - название коэффициента, {i[2]} - значение коэффициента.

Также для одной группы присутствует дополнительный коэффициент с наименованием "__all__", значение которого соответствует значению всей группы.

Платные услуги (контекст localContract)

У localContract есть параметр payment (CEventPaymentInfo), который вытягивает следующие данные:

Пример использования: {for: payment in event.localContract.payment}

{payment.date} <-- дата платежа -->

{payment.cashOperation} <-- Кассовая операция {rbCashOperation} -->

{payment.sum} <-- Сумма платежа -->

{payment.typePayment} <-- Тип оплаты (наличный = 0, безналичный = 1) -->

{payment.settlementAccount} <-- Расчетный счет -->

{payment.bank} <-- Реквизиты банка (COrgInfo) -->

{payment.numberCreditCard} <-- Номер кредитной карты -->

{payment.cashBox} <-- идентификатор кассового аппарата --> {end:}

Журнал планирования профилактического наблюдения (контекст ProphylaxisPlanningList)

Текущая запись в журнале (CProphylaxisPlanningInfo):

    • Код пациента: {ProphylaxisPlanning.clientId}
    • Телефон: {ProphylaxisPlanning.contact}
    • Пациент: {ProphylaxisPlanning.client) (CClientInfo)
    • Дата и время добавления в БД: {ProphylaxisPlanning.createDatetime}
    • Дата и время изменения: {ProphylaxisPlanning.modifyDatetime}
    • Создал запись: {ProphylaxisPlanning.createPerson} (CPersonInfo)
    • Изменил запись: {ProphylaxisPlanning.modifyPerson} (CPersonInfo)
    • Дата начала (столбец "С"): {ProphylaxisPlanning.begDate}
    • Дата окончания (столбец "По"): {ProphylaxisPlanning.endDate}
    • Подразделение: {ProphylaxisPlanning.orgStructure} (COrgStructureInfo)
    • Место: {ProphylaxisPlanning.scene} (CSceneInfo)
    • Специальность: {ProphylaxisPlanning.speciality} (CSpecialityInfo)
    • Врач: {ProphylaxisPlanning.person} (CPersonInfo)
    • Диагноз: {ProphylaxisPlanning.diagnosis} (строка)
    • Причина: {ProphylaxisPlanning.reason} (строка)
    • Оповещен: {ProphylaxisPlanning.notified} (1-да, 0-нет)
    • Отработан: {ProphylaxisPlanning.processed} (1-да, 0-нет)
    • Талон на прием к врачу: {ProphylaxisPlanning.scheduleItem} (CScheduleItemInfo)
    • Примечания: {ProphylaxisPlanning.note} (строка)
    • Внешний пользователь: {ProphylaxisPlanning.externalUserId} (строка)
    • Роль внешнего пользователя: {ProphylaxisPlanning.externalUserRole} (строка)
    • Имя внешнего пользователя: {ProphylaxisPlanning.externalUserName} (строка)
    • Удален: {ProphylaxisPlanning.deleted} (1-да, 0-нет)
    • Тип планирования: {ProphylaxisPlanning.typeId} (CProphylaxisPlanningTypeInfo)

Список записей (CProphylaxisPlanningInfoList):

    • Цикл по всем записям:

{for: planningInfo in ProphylaxisPlanningList}

...

{end:}

    • Кол-во записей:

{len(ProphylaxisPlanningList)}

класс "Тип планирования" (CProphylaxisPlanningTypeInfo)

    • Код: {code}
    • Имя: {name}
    • Дни до: {daysBefore}
    • Дни после: {daysAfter}

Напечатать тип планирования для ProphylaxisPlanning:

{ProphylaxisPlanning.typeId}

Печать изображений

Свойства действия типа ActionProperty_Image и ActionProperty_ImageMap в качестве value возвращают CImageInfo.

с CImageInfo можно сделать: - преобразовано в строку (как сейчас) - возвращается HTML-тег <img ...>

{prop.value:h}

- получить ширину и высоту:

Size: {prop.value.width} × {prop.value.height}

- получить отмасштабированный CImageInfo:

{ prop.value.scaled(100): h}

{prop.value.scaled(width=50, height=100) :h}

Scaled имеет четыре параметра (имя=значение_по_умолчанию # примечание):

* width=None # требуемая ширина, если 0 или None то ширина меняется сообразно масштабу

* height=None # требуемая высота, если 0 или None то высота меняется сообразно масштабу

* keepAspectRatio=False # если keepAspectRatio=True, то изображение масштабируется так, чтобы вбить картинку в новый прямоугольник без искажения пропорций; иначе картинка получает новый размер и искажается

* smoothTransformation=True # если smoothTransformation=True то при масштабировании используется сглаживание, иначе - быстрые и некрасивые вставка/пропуск пикселей.

Прививочная карта пациента

Пример текста шаблона печати из прививочной карты

{for: vaccineItem in vaccineList}

{vaccineItem.vaccine.name}

{vaccineItem.vaccinationType}

{vaccineItem.datetime}

{vaccineItem.dose}

{vaccineItem.serial}

{vaccineItem.person.shortName}

{vaccineItem.reaction.name}

{vaccineItem.transitionType.name}

{vaccineItem.relegateOrg.title}

{for: infectionItem in vaccineItem.infections}

{infectionItem.infection.code}

{infectionItem.infection.name}

{end:}

{end:}

{for: medicalExemptionItem in medicalExemptionList}

{medicalExemptionItem.date}

{medicalExemptionItem.MKB}

{medicalExemptionItem.person.shortName}

{medicalExemptionItem.endDate}

{medicalExemptionItem.medicalExemptionType.name}

{for: infectionItem in medicalExemptionItem.infections}

{infectionItem.infection}

{end:}

{end:}

Режим "Диспансерное наблюдение"

Контекст печати surveillance.

Печать списка пациентов
{clientsInfo} - массив списка пациентов, можно пройти как по массиву, обратиться по индексу, элементы - CClientInfo

Печать параметров фильтров

    • Общие параметры отбора

{begDate} - значение параметра "Дата начала" (или "На дату" для вкладки Состоят), CDateInfo

{endDate} - значение параметра "Дата окончания", CDateInfo

{orgStructureId} - значение параметра "Подразделение врача", COrgStructureInfo

{specialityType} - значение параметра "Специальность", определение типа отбора, 0 - "Отбор по ИЛИ", 1 - "Отбор по И"

{for: spec in specialityId}

{spec.code} {spec.name}

{end:} - значение параметра "Специальность", CSpecialityInfo

{personId} - значение параметра "Врач", CPersonInfo

{MKBFilter} - значение параметра "Коды диагнозов по МКБ", определение типа фильтра, 0 - "Игнор.", 1 - "Интервал"

{MKBFrom} - значение параметра "Коды диагнозов по МКБ", определение первого значения диапазона, CMKBInfo

{MKBTo} - значение параметра "Коды диагнозов по МКБ", определение последнего значения диапазона, CMKBInfo

    • Параметры отбора по пациенту

{accountingSystemId} - значение параметра "Пациент", выбор системы идентификации (может быть "не задано"), CAccountingSystemInfo

{filterClientId} - значение параметра "Пациент", информация о пациенте с выбранным идентификатором, CClientInfo

{sex} - значение параметра "Пол", пустое значение - "не задано", М, Ж

{ageFor} - значение параметра "Возраст с"

{ageTo} - значение параметра "Возраст по"

    • Параметры отбора по летальности

{death} - значение параметра "Летальность", условие отбора, 0 - "не учитывать", 1 - "только живые", 2 - "только умершие"

{deathBegDate} - значение параметра "Летальность", дата начала периода отбора данных

{deathEndDate} - значение параметра "Летальность", дата окончания периода отбора данных

    • Параметры отбора по прикреплению

{attachOrganisationId} - значение параметра "Прикрепление к ЛПУ", COrgInfo

{isNotAttachOrganisation} - значение параметра "Не имеет прикрепления к выбранному ЛПУ", false - имеет прикрепление к выбранному ЛПУ, true - не имеет прикрепления

к выбранному ЛПУ

{isFilterAddressOrgStructure} - значение параметра "По участку", активность фильтра, false - не отмечен, true - отмечен

{addressOrgStructureTypeId} - значение параметра "По участку", условие подбора участка, 0 - "регистрация", 1 - "проживание", 2 - "регистрация или проживание",

3 - "прикрепление", 4 - "регистрация или прикрепление", 5 - "проживание или прикрепление", 6 - "регистрация, проживание или прикрепление"

{addressOrgStructureId} - значение параметра "По участку", подразделение прикрепления, COrgStructureInfo

    • Параметры отбора по адресу

{isFilterAddress} - значение параметра "Адрес", активность фильтра, false - не отмечен, true - отмечен

{addressTypeId} - значение параметра "Адрес", условие подбора по типу адреса, 0 - "регистрации", 1 - "проживания"

{addressCityCode} - значение параметра "Адрес", населенный пункт, возвращается КЛАДР-код нас.пункта, если выбран нас.пункт

{addressCityName} - значение параметра "Адрес", населенный пункт, возвращается наименование нас.пункта и его тип, если выбран нас.пункт

{addressCitySOCR} - значение параметра "Адрес", населенный пункт, возвращается тип нас.пункта, если выбран нас.пункт

{addressOkatoCode} - значение параметра "Адрес", район, возвращается КЛАДР-код района, если выбран район

{addressOkatoName} - значение параметра "Адрес", район, возвращается наименование района, если выбран район

{KLADRStreetCodeList} - значение параметра "Адрес", список улиц, возвращается список КЛАДР-кодов улиц выбранного населенного пункта, если выбран нас.пункт

{addressStreetCode} - значение параметра "Адрес", улица, возвращается КЛАДР-код выбранной улицы, пусто - если улица не выбрана

{addressStreetName} - значение параметра "Адрес", улица, возвращается наименование выбранной улицы, пусто - если улица не выбрана

{addressStreetSOCR} - значение параметра "Адрес", улица, возвращается тип выбранной улицы, пусто - если улица не выбрана

{addressHouse} - значение параметра "Адрес", номер дома

{addressCorpus} - значение параметра "Адрес", номер корпуса

{addressFlat} - значение параметра "Адрес", номер квартиры

    • Параметры отбора по соц.статусу

{isSocStatuses} - значение параметра "Соц.статус", активность фильтра, false - не отмечен, true - отмечен

{socStatusesBegDate} - значение параметра "Соц.статус", дата начала периода отбора, CDateInfo

{socStatusesEndDate} - значение параметра "Соц.статус", дата окончания периода отбора, CDateInfo

{socStatusesClass.code} - значение параметра "Соц.статус", код класса соц.статуса

{socStatusesClass.name} - значение параметра "Соц.статус", наименование класса соц.статуса

{socStatusesType.code} - значение параметра "Соц.статус", код типа соц.статуса

{socStatusesType.name} - значение параметра "Соц.статус", наименование типа соц.статуса

    • Параметры отбора по обращениям

{isFilterEvent} - значение параметра "Обращения", активность фильтра, false - не отмечен, true - отмечен

{isEventVisitDiagnosis} - значение параметра "по Диспансерному наблюдению", активность фильтра, false - не отмечен, true - отмечен

{eventVisitType} - значение параметра "Обращения", условие отбора, 0 - "обращались", 1 - "не обращались"

{eventBegDate} - значение параметра "Обращения", дата начала периода отбора, CDateInfo

{eventEndDate} - значение параметра "Обращения", дата окончания периода отбора, CDateInfo

Режим "Складской учет"

Вкладка "Движение" (контекст StockMotions)

    • Вывод информации по всем документам в списке

{for: item in motionsList}

{item.type} - тип документа

{item.number} - номер документа

{item.date} - дата документа

{item.reason} - основание документа

{item.reasonDate} - дата основания

{item.receiver} - подразделение-получатель

{item.supplier} - подразделение-поставщик

{item.note} - примечание

{item.client} - пациент

{item.supplierPerson} - ответственный сотрудник от подразделения-поставщика

{item.receiverPerson} - ответственный сотрудник от подразделения-получателя

{item.supplierOrgPerson} - ответственный от внешнего постащика

{item.supplierOrg} - внешний поставщик

{for: it in item.items} - информация по каждой позиции в документе

{it.price} - цена

{it.sum} - сумма

{it.qnt} - количество

{it.batch} - серия

{it.isOut} - 0, если исходный материал, 1, если результат (для документов типа "Производство")

{it.shelfTime} - годен до

{it.finance} - тип финансирования

{it.unit.code} - код ед.измерения

{it.unit.name} - наименование ед.измерения

{it.reason.code} - код причины утилизации (для документов типа "Утилизация")

{it.reason.name} - наименование причины утилизации (для документов типа "Утилизация")

{it.note} - примечание

{it.nomenclature.code} - код ЛСиИМН

{it.nomenclature.name} - ТН на русском ЛСиИМН

{it.nomenclature.RegionalCode} - региональный код ЛСиИМН

{it.nomenclature.type.code} - код типа ЛСиИМН

{it.nomenclature.type.name} - наименование типа ЛСиИМН

{it.nomenclature.internationalNonproprietaryName} - МНН на русском ЛСиИМН

{it.nomenclature.producer} - производитель ЛСиИМН

{it.nomenclature.ATC} - код по АТХ ЛСиИМН

{it.nomenclature.packSize} - объем упаковки ЛСиИМН

{it.nomenclature.mnnCode} - код по МНН ЛСиИМН

{it.nomenclature.trnCode} - код по ТРН ЛСиИМН

{it.nomenclature.dosageValue} - дозировка ЛСиИМН

{it.nomenclature.dosageUnit} - единица дозировки ЛСиИМН

{it.nomenclature.lfForm.code} - код формы выпуска ЛСиИМН

{it.nomenclature.lfForm.name} - наименование формы выпуска ЛСиИМН

{it.nomenclature.inDate} - дата включения ЛСиИМН

{it.nomenclature.exDate} - дата исключения ЛСиИМН

{it.nomenclature.completeness} - комплектность ЛСиИМН

{it.nomenclature.mnnLatin} - МНН на латинском ЛСиИМН

{it.nomenclature.originName} - ТН на латинском ЛСиИМН

{for: key in it.nomenclature.features} - характеристики ЛСиИМН

{key}

([for: data in it.nomenclature.features[key]}

{data}

{end:})

{end:}

{for: analog in it.nomenclature.analogues} - аналоги ЛСиИМН

{analog.name}

{end:}

{end:}

{end:}

{for: comp in it.nomenclature.composition} - состав ЛСиИМН

{it.idx}

{it.nomenclature.type}

{it.nomenclature.activeSubstance} (CNomenclatureActiveSubstanceInfo)

{end:}

    • Вывод информации по выделенным документам в списке

{for: item in selectedMotionsList} - вывод информации по выделенным документам в списке

...

{end:}

    • Документ "Внутреннее потребление" (контекст StockInternalConsumption)

{for: row in rows}

{row.sum} - сумма

{row.qnt} - количество

{row.nomenclature} - номенклатура

{row.batch} - серия

{row.isOut} - 0, если исходный материал, 1, если результат (для документов типа "Производство")

{row.note} - примечание

{row.shelfTime} - годен до

{row.finance} - тип финансирования

{row.unit} - ед.измерения

{row.price} - цена

{row.medicalAidKind} - профиль медицинской помощи

{number} - номер документа

{date} - дата документа

{supplier} - подразделение-поставщик

{supplierPerson} - ответственный сотрудник от подразделения-поставщика

{note} - примечание

{end:}

    • Документ "Утилизация" (контекст StockUtilization)

{for: row in rows}

<tr>

<td>{row.sum}</td> - сумма

<td>{row.qnt}</td> - количество

<td>{row.nomenclature}</td> - номенклатура

<td>{row.batch}</td> - серия

<td>{row.shelfTime}</td> - Годен до

<td>{row.finance}</td> - тип финансирования

<td>{row.unit}</td> - ед. учета

<td>{row.reason}</td> - причина утилизации

<td>{row.price}</td> - цена

<td>{row.medicalAidKind}</td> - вид медицинской помощи

<td>{row.disposalMethod.code}</td> - код способа утилизации

<td>{row.disposalMethod.name}</td> - наименование способа утилизации

<td>{number}</td> - Номер документа

<td>{date}</td> -Дата

<td>{time}</td> - время

<td>{supplier}</td> - Подразделение

<td>{supplierPerson}</td> - Ответственный

<td>{note}</td> - Примечания

</tr>

{end:}

    • Сведения о составе комиссии для документа "Утилизация" (контекст StockUtilization)

{for: item in commission}

<td>{item.person} - Фамилия И.О. и специальность члена комиссии

<td>{item.postName} - Роль в комиссии (Председатель, Утверждающий, Член комиссии)

{end:}

    • Вкладка "Остатки" (контекст StockRemainings)

{remainingsFilterDate} - на дату

{for: item in remainingsList}

{item.orgStructure} - подразделение

{item.nomenclature._} - аналогично it.nomenclature._ на вкладке "Движение"

{item.batch} - серия

{item.qnt} - количество

{item.shelfTime} - годен до

{item.finance} - тип финансирования

{item.unit.code} - код ед.измерения

{item.unit.name} - наименование ед. измерения

{item.sum} - сумма

{end:}

Вкладка "Мои требования" (контекст StockMyRequisitions) и "Требования ко мне" (контекст StockRequirementsToMe)

    • Вывод информации по всем документам в списке

{for: item in requisitionsList}

{item.number} - номер требования

{item.date} - дата требования

{item.deadline} - срок исполнения требования

{item.receiver} - подразделение-заказчик по требованию

{item.supplier} - подразделение-поставщик по требованию

{item.note} - примечание

{agreementDate} - Дата согласования

{agreementPerson} - Кто согласовал

{agreementStatus} - Статус согласования (0-Не согласовано, 1-Согласовано, 2-Отклонено)

{agreementNote} - Примечание к согласованию

{for: it in item.items} - информация по каждой позиции в требовании

{it.nomenclature._} - аналогично it.nomenclature._ на вкладке "Движение"

{it.finance} - тип финансирования

{it.qnt} - затребованное количество

{it.satisfiedQnt} - отпущенное количество

{it.unit.code} - код ед.измерения

{it.unit.name} - наименование ед. измерения

{end:}

{end:}

    • Вывод информации по выделенным документам в списке

{for: item in selectedRequisitionsList} - вывод информации по выделенным документам в списке

...

{end:}

    • Связь с накладными по требованиям

{for: item in requisitionsList}

{for: motion in item.motions} - накладная по требованию (см. цикл по motionsList на вкладке "Движение")

{for: pos in motion.items} - позиция накладной (см. цикл по item.items на вкладке "Движение")

...

{end:}

{end:}

{end:}

Вкладка "Идентификация"

Вкладка идентификация присутствует в большинстве таблиц.

Используя функцию .identify можно получить идентификатор по указанному в скобках справочнику.

Пример получения идентификатора по справочнику должностей oid:1.2.643.5.1.13.13.11.1002:

{action.person.post.identify('urn:oid:1.2.643.5.1.13.13.11.1002')

Класс "Организация" COrgInfo

Текущая организация: {currentOrganisation} (COrgInfo) имеет свойства:

    • Полное название:{currentOrganisation.fullName}
    • Сокращенное название:{currentOrganisation.shortName}
    • Для печати:{currentOrganisation.title}
    • Сеть:{currentOrganisation.net}
    • ИНФИС-код:{currentOrganisation.infisCode}
    • ОКВЭД:{currentOrganisation.OKVED}
    • ИНН:{currentOrganisation.INN}
    • ОКПО:{currentOrganisation.OKPO}
    • КПП:{currentOrganisation.KPP}
    • ОГРН:{currentOrganisation.OGRN}
    • ОКАТО:{currentOrganisation.OKATO}
    • ОКФС:{currentOrganisation.OKPF}
    • ФСС:{currentOrganisation.FSS}
    • Регион:{currentOrganisation.region}
    • Адрес:{currentOrganisation.addressFreeInput}
    • ФИО Шефа:{currentOrganisation.chief}

Теперь в COrgInfo есть два поля:

- chief (CPersonInfo)

- chiefFreeInput (строка)

А также функция formatChief(). Выводит chiefFreeInput, если нет Organisation.chief_id, а если есть, то выводит ФИО врача и должность. Функция всегда возвращает строку. Например: {currentOrganisation.formatChief()}

    • Телефон:{currentOrganisation.phone}
    • ФИО Гл.бухгалтера:{currentOrganisation.accountant}
    • примечание:{currentOrganisation.notes}

Вкладка "Лицензии" (контекст COrgLicenseInfo)

    • Номер лицензии: {COrgLicenseInfo.number}
    • Кем выдана: {COrgLicenseInfo.issuer}
    • Дата выдачи: {COrgLicenseInfo.issueDate}
    • Начало действия: {COrgLicenseInfo.begDate}
    • Окончание действия: {COrgLicenseInfo.endDate}

Окно "Планирование профилактического наблюдения"

Контекст печати surveillancePlanning

    • Сведения о пациенте: client(CClientInfo)
    • Сведения о случае диспансерного наблюдения пациента (блок "Планирование профилактического наблюдения" в окне "Планирование профилактического наблюдения")

planningSurveillances(CProphylaxisPlanningInfoProxyList):

{for: planningSurveillance in planningSurveillances}

{planningSurveillance.diagnosis} (CMKBInfo) - МКБ

{planningSurveillance.dispanser} - ДН

{planningSurveillance.takenDate} - Дата взятия

{planningSurveillance.person} (CPersonInfo) - Врач

{planningSurveillance.removeDate} - Дата снятия

{planningSurveillance.removeReason} - Причина снятия

{end:}

    • Сведения о периодах случая диспансерного наблюдения пациента (блок "Планирование и контроль посещений" в окне "Планирование профилактического наблюдения")

controlSurveillances(CProphylaxisPlanningInfoProxyList):

{for: controlSurveillance in controlSurveillances}

{controlSurveillance.diagnosis} (CMKBInfo) - МКБ

{controlSurveillance.plannedDate} - Дата планирования

{controlSurveillance.begDate} - Дата начала периода

{controlSurveillance.endDate} - Дата окончания периода

{controlSurveillance.person} (CPersonInfo) - Врач

{controlSurveillance.visit.date} (CVisitInfo) - Явился

{controlSurveillance.removeDate} - Дата снятия

{controlSurveillance.removeReason} - Причина снятия

{end:}

Окно "Контрольная карта"

Открывается по кнопке "Печать" в окне "Планирование профилактического наблюдения".

Контекст печати surveillancePlanningCard

    • Сведения о пациенте: client(CClientInfo)
    • Сведения о случае диспансерного наблюдения пациента (блок "Диагноз" в "Контрольной карте")

planningSurveillances(CProphylaxisPlanningInfoProxyList):

{for: planningSurveillance in planningSurveillances}

{planningSurveillance.diagnosis} (CMKBInfo) - МКБ

{planningSurveillance.dispanser} - ДН

{planningSurveillance.takenDate} - Дата взятия

{planningSurveillance.person} (CPersonInfo) - Врач

{planningSurveillance.removeDate} - Дата снятия

{planningSurveillance.removeReason} - Причина снятия

{end:}

    • Сведения о периодах случая диспансерного наблюдения пациента (блок "Контроль посещений" в "Контрольной карте")

controlSurveillances(CProphylaxisPlanningInfoProxyList):

{for: controlSurveillance in controlSurveillances}

{controlSurveillance.diagnosis} (CMKBInfo) - МКБ

{controlSurveillance.plannedDate} - Дата планирования

{controlSurveillance.begDate} - Дата начала периода

{controlSurveillance.endDate} - Дата окончания периода

{controlSurveillance.person} (CPersonInfo) - Врач

{controlSurveillance.visit.date} (CVisitInfo) - Явился

{controlSurveillance.removeDate} - Дата снятия

{controlSurveillance.removeReason} - Причина снятия

{end:}

    • Сведения о мероприятиях случая диспансерного наблюдения пациента (отмеченные мероприятия в блоке "Лечебно-профилактические мероприятия" в "Контрольной карте")

measuresActionsSelected (CActionSelectedInfoProxyList, CActionInfo):

{for: action in measuresActionsSelected}

{action.name} - Наименование

{action.directionDate} - Назначено

{action.begDate} - Начато

{action.endDate} - Окончено

{action.person} (CPersonInfo) - Выполнил

...

{end:}

 

Формирование CDA документа

При необходимости после подписания и прикрепления документа также сформировать CDA документ в формате XML необходимо использовать функцию addSupplement:

{: addSupplement('xml', formatByTemplate('CDA_CERT_NOT_INF', 'CDA')) }

xml - формат документа

CDA_CERT_NOT_INF - имя соответствующего шаблона печати, по которому должен быть сформирован CDA документ

CDA - контекст соответствующего шаблона печати, по которому должен быть сформирован CDA документ