(812) 418-39-70

Работа с шаблонами печати

  1. Талон — Token.html, контекст — token
    2. Приглашение на прием к врачу — Order.html
    3. Карта травматика — f25Tr.html
    4. Образец Ф.131 F131.html , контекст — F131
    5. Заготовка для шаблона льготного рецепта recipe.html

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

Шаблон — это текст, состоящий из двух «компонент» — обычного 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 на

так
<HR>
{‘[1]\n[2]\n[3]\n[<]\n[<B>bold</B>]’:h}
<HR>
{‘[1]\n[2]\n[3]\n[<]\n[<B>bold</B>]’}
<HR>
{‘[1]\n[2]\n[3]\n[<]\n[<B>bold</B>]’:n}
<HR>
превратится в
________________________________________
• [1] [2] [3] [<] [bold]
________________________________________
• [1] [2] [3] [<] [bold]
________________________________________
• [1]
• [2]
• [3]
• [<]
• [bold]
________________________________________

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

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

 

Форматирование данных

  • Абзац:
  • Перевод на след.строку без разрыва абзаца:
  • Выделение: <B> </B>
  • Горизонтальная линия:

 

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

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.

Определение наличия атрибута у объекта

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

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

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

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

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

Пример:
action.begDate.date.daysTo(action.endDate.date) — дней от начала действия до конца
event.execDate.date.daysTo(currentDate.date) — прошло со времени события

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

  • Текущая дата: {currentDate}
    • Текущее время: {currentTime}
    • Текущая организация: {currentOrganisation} (COrgInfo) имеет свойства:
    • Полное название:{currentOrganisation.fullName}
    • Сокращенное название:{currentOrganisation.shortName}
    • Для печати:{currentOrganisation.title}
    • Сеть:{currentOrganisation.net}
    • ИНФИС-код:{currentOrganisation.infisCode}
    • ОКВЭД:{currentOrganisation.OKVED}
    • ИНН:{currentOrganisation.INN}
    • КПП:{currentOrganisation.KPP}
    • ОГРН:{currentOrganisation.OGRN}
    • ОКАТО:{currentOrganisation.OKATO}
    • ОКФС:{currentOrganisation.OKPF}
    • ФСС:{currentOrganisation.FSS}
    • Регион:{currentOrganisation.region}
    • Адрес:{currentOrganisation.address}
    • ФИО Шева:{currentOrganisation.chief}
    • Телефон:{currentOrganisation.phone}
    • ФИО Гл.бухгалтера:{currentOrganisation.accountant}
    • примечание:{currentOrganisation.notes}Текущее подразделение: currentOrgStructure (COrgStructureInfo), имеет свойства:
    • Сокращенное название:{name} (строка),
    • {infisInternalCode} (строка),
    • {infisDepTypeCode} (строка),
    • Полное название:{fullName} (строка)
    • Организация, к которой принадлежит подразделение:{organisation} (COrgInfo),
    • Родительское подразделение:{parent} (COrgStructureInfo)
    • Адрес:{address} (строка)
    • Начальник подразделения: {chief} (типа CPersonInfo)
    • Старшая мед.сестра подразделения: {headNurse} (типа CPersonInfo)

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

    Пациент: client (CClientInfo), имеет свойства:

  • код: {client.id}
    • код ЛПУ + код пациента: {‘*’+currentOrganisation.miacCode+’.’+client.id+’*’}
    • штрих код: *{client.id}*
    • ФИО: {client.fullName} (строка)
    • Фамилия: {client.lastName} (строка)
    • Имя:{client.firstName} (строка)
    • Отчество: {client.patrName} (строка)
    • Дата Рождения: {client.birthDate} (CDateInfo)
    • Время Рождения: {client.birthTime}
    • Возраст: {client.age} (строка)
    • СНИЛС: {client.SNILS} (строка)
    • Пол: {client.sex} (‘М’/’Ж’)
    • Документ: {client.document} (CClientDocumentInfo)
    • Тип документа: {client.document.type}
    • Серия документа: {client.document.serial}
    • Номер документа: {client.document.number}
    • Полис: {client.policy} (CClientPolicyInfo)
    • Адрес регистрации: {client.regAddress} (CClientAddressInfo)
    • Адрес проживания: {client.locAddress} (CClientAddressInfo)
    • Занятость: {client.work} (CClientWorkInfo)
    • Группа крови: {client.bloodType} (строка)
    • Аллергии: {client.allergies} (CClientAllergyInfoList)
    • Лекарственные непереносимости: {client.intolerances} (CClientIntoleranceMedicamentInfoList)
    • Телефоны: {client.phones} (строка)
    • Временное прикрепление:  {client.permanentAttach} (CClientAttachInfo)
    • Постоянное прикрепление: {client.temporaryAttach} (CClientAttachInfo)

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

 

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

 

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

Полис: client.policy (CClientPolicyInfo), имеет свойства:
• тип: {client.policy.type}
• страхователь: {client.policy.insurer}
• серия: {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}
    • Рег-город: {client.regAddress.city}
    • Рег-улица: {client.regAddress.street}
    • Рег-дом: {client.regAddress.number}
    • Рег-корпус: {client.regAddress.corpus}
    • Рег-квартира: {client.regAddress.flat}
    • Рег-текст: {client.regAddress.freeInput}
    • Рег-район: {client.regAddress.district}
    • Рег-ОКАТО: {client.regAddress.ОКАТО}

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

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

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

[править]»Разделение» адреса на город, улицу, дом, квартиру

{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[‘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 — вернёт словарь с отображением код->название,может быть полезно для заголовков.

Связи пациента: {client.relations} (список) элемент списка имеет след. свойства:
• 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:}

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

Лекарственная непереносимость: {for: intolerance in client.intolerances} (CClientIntoleranceMedicamentInfo) имеет свойства:
• Название: {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}
• Список статусов
{if:len(client.socStatuses)}

{for: s in client.socStatuses}

{s.code}{s.name}{s}

код       имя       всё

{end:}
{end:}

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

{if:len(client.socStatuses)}
Л
{else:}
Х
{end:}

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

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

client.socStatuses[i].document (CClientDocumentInfo):

  • documentTypeCode — код типа документа
  • documentTypeName — название типа документа
  • 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 — это массив из событий. По каждому элементу массива можно получить все данные о событии.

 

Сотрудник 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}

currentPerson — сотрудник, запустивший программу.

Класс  «Кадровые перемещения сотрудника» 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:}

 

Услуга (профиль оплаты) 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} (целое число)

Обращение {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.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} (1-плановый, 2-экстренный, 3-самотёком, 4-принудительный)
  • Результат обращения: {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} (строка)
  • тип квоты модели пациенты {event.patientModel.quotaType} (CQuotaTypeInfo )
  • Вид лечения: {event.cureType} (строка)
  • Метод лечения: {event.cureMethod} (строка)
  • Вид медицинской помощи {event.eventType.medicalAidKind}
  • Журнал отложенной записи

 

Вкладка Обращение (контекст печати 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} — врач.

 

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

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

 

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

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

Вызов скорой помощи 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} (строка)

Диагноз (ЛУД) — представляется экземплярами CDiagnosisInfo. У экземпляра CDiagnosisInfo есть свойства:
• type (CDiagnosisTypeInfo),
• MKB (CMKBInfo),
• MKBEx (CMKBInfo),
• 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),
• notes (строка)
• CStageInfo, CHealthGroupInfo — суть также представление элементов различных справочников, которые предоставляют свойства code и name.

Тип действия (статус, мероприятие, диагностика, лечение, и.т.п.) 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.orgStructures} (список из COrgStructureInfo)

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

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

  • статус выполнения: {action.status} (0 — начато, 1 — ожидание, 2 — закончено, 3 — отменено)
  • дата направления: {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’рост’]}

 

У экземпляра действия также есть параметр

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

Свойства действия:
рост: { action[u’Рост’] }/{ action[u’Рост’].value }/{ action[u’Рост’].unit }/{ action[u’Рост’].norm }
вес: { action[u’Вес’] }/{ action[u’Вес’].value }/{ action[u’Вес’].unit }/{ action[u’Вес’].norm }
{action.name} — цикл по свойствам<BR>
{for: prop in action}
{prop.name}: {prop.value}/{prop.unit}/{prop.norm}

{end:}
{action.name} — цикл по номерам свойств<BR/>
{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} — цикл по свойствам с фильтром<BR/>

{: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)}<BR/>
{for: i,a in enumerate(actions)}
{if: i == currentActionIndex}{end:}
{i}/{a.code}/{a.name}/{len(a)}
{if: i == currentActionIndex}{end:}

{end:}

КСГ у действий

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

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

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

ActionsList — контекст печати, действует для кнопки «Печать», которая находится в Картотека — вкладка Обслуживание, ниже вкладка Мероприятия. При создании шаблона печати для данной кнопкой можно получить следующие данные для направлений:

— {action.event.client.shortName} ФИО пациента

— {action.event.client.birthDate} Дата рождения

— {action.directionDate.date.toString(‘dd.MM.yyyy’)} Дата

— {action.setPerson.shortName} Кем направлен

— {direction.value} Куда направлен

 

Биоматериал, связанный с действием  {action.takenTissueJournal} (CtakenTissueJournalInfo):

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

 

Вкладка Обслуживание (контекст печати 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} (строка)

Документ временной нетрудоспособности tempInvalid (CTempInvalidInfo), имеет свойства:
• тип документа: {tempInvalid.doctype} (0-листок нетрудоспособности, 1-справка)
• причина нетрудоспособности: {tempInvalid.reason} (CRBInfo)
• cерия документа: {tempInvalid.serial} (строка)
• номер документа: {tempInvalid.number} (строка)
• пол: {tempInvalid.sex} (строка)
• возраст: {tempInvalid.age} (строка)
• продолжительность в днях: {tempInvalid.duration} (целое число)
• продолжительность в днях с учётом внешних периодов: {tempInvalid.externalDuration} (целое число)
• дата начала: {tempInvalid.begDate} (CDateInfo)
• дата окончания: {tempInvalid.endDate} (CDateInfo)
• код диагноза последнего периода: {tempInvalid.MKB} (строка)
• код доп. диагноза последнего периода: {tempInvalid.MKBEx} (строка)
• результат: {tempInvalid.closed} (0-Открыт, 1-Закрыт, 2-Продлён, 3-Передан)

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

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

На пример:  jobTickets[i].actions[0].event.client

Номерок на Работу Ticket (СTicketInfo), имеет свойства:

  • datetime — дата и время номерка
  • idx — порядковый номер
  • jobType — (CjobTypeInfo) данные о типе Работы
  • 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: строка — жалобы

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

<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:строка

Класс «Тип финансирования» CFinanceInfo
• code — код источника
• name- название источника

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

{for: cont in account.contract.contingent} {cont.attachType} — Тип прикрепления (CAttachTypeInfo) {cont.attachOrg} — ЛПУ прикрепления {cont.org} — Занятость (COrgInfo) {cont.socStatusType} — Соц. Статус (CSocStatusType){cont.insurer} — СМО (COrgInfo) {cont.policyType} — Тип страхования (CRBPolicyTypeInfo) {cont.serviceArea} — Зона обслуживания {cont.sex} — пол {cont.age} — возраст  {end:}
Класс «МЭС»  CMesInfo 

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

Класс «КСГ»

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

{for: csg in event.csgList}

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

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

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

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

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

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

{end:}

 

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

Контекст печати для вкладки «Картотека»

clientsList — контекст печати для вкладки «Картотека».

Данные:      { ‘clientsList’: clientInfoList, ‘client’: clientInfo  }

 

CEmergencyEventInfo, CEmergencyEventInfoList — из формы 110/у сведения о вызове скорой помощи.

Данные: ‘event’  : eventInfo,

‘eventList’ : eventInfoList.

Контекст «feed» (Порционник) (ДГБ19).

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

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

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

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

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

{clientsCount} — число пациентов всего
{clientsWithFeed} — число пациентов с назначенным питанием
{patronsCount} — число патронов всего
{patronsWithFeed} — число патронов с назначенным питанием

{orgStructure} — текущее подразделение
{reportDate} — дата, выбранная в диалоге печати
{reportType} — тип порционника, выбираемый в диалоге печати

 

Контексты печати для вкладок режима «Стационарный монитор» (реализация ДГБ19).

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

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

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

 

Параметр, с помощью которого можно получить список предыдущих госпитальных событий пациента — clientStatEvents

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

Вкладка «Присутствующие» — контекст печати «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.items}, {item.event}
    • Сумма по счёту — {account.sum}
    • Применённые коэффициенты к элементы реестра счёта .

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

    • {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__», значение которого соответствует значению всей группы.

 

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

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

{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}

{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:}

 

Платные услуги (контекст 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:}

 

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

Свойства действия типа 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 то при масштабировании используется сглаживание, иначе — быстрые и некрасивые вставка/пропуск пикселей.

 

Формирование штрих-кода PDF417 для рецептурного бланка 

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

 

  • BitsPack(‘<кодировка>’) — создает «пакет битов», при этом кодирование текста производится в указанной кодировке.

 

Пример:

{: b = BitsPack(‘cp1251’) }

 

  • packString(<строка>, <количество бит>, <заполнение>) — добавляет в «пакет битов» строку с указанными параметрами. По умолчанию «заполнение» использует пробелы.

 

Пример:

{: b.packString(u’Всем привет!’, 16, ‘*’) }

{: b.packString(u’Пока!’, 10) }

 

  • packInt(<число>, <количество бит>) — добавляет в «пакет битов» число с указанными параметрами.

 

Пример:

{: b.packInt(1, 3) }

{: b.packInt(12, 3) }

 

  • packBool(<значение>) — добавляет в «пакет битов» один бит.

 

Пример:

{: b.packBool(age<18) }

 

  • pad(<граница выравнивания>) — заполнение «пакета битов» нулями до полного числа бит. По умолчанию <граница выравнивания> равна 8, и это обозначает варавнивание на полные байты. Если будет нужно заполнить до целого числа 16-битных или 32-битных слов то нужно передавать параметр 16 или 32.

 

Пример:

{: b.pad() }

 

  • pdf417() — формирование штрих-кода PDF417.

 

Пример:

{ pdf417(‘p’+b.b64()) :h}

 

"САМСОН", Медицинская Информационная Система, Информатизация в здравоохранении