Медицина/Документы Jinja: различия между версиями
Нет описания правки |
Admin (обсуждение | вклад) |
||
| (не показана 21 промежуточная версия 2 участников) | |||
| Строка 8: | Строка 8: | ||
{{ record.case }} | {{ record.case }} | ||
{% | {% set case_services = get_case_services(record.case, include_complex_service=False) %} | ||
{% set case_record_services = get_case_record_services(record.case) %} | |||
{% set record_services = get_record_services(record) %} | |||
{% for service in case_services %} | |||
<p>{{ service.name }}</p> | <p>{{ service.name }}</p> | ||
{% endfor %} | |||
{% for record_service in case_record_services %} | |||
<p>{{ record_service.service.name }}</p> | |||
<p>{{ record_service.cost }}</p> | |||
<p>{{ record_service.status }}</p> | |||
{% endfor %} | |||
{% for record_service in record_services %} | |||
<p>{{ record_service.service.name }}</p> | |||
<p>{{ record_service.cost }}</p> | |||
<p>{{ record_service.status }}</p> | |||
{% endfor %} | {% endfor %} | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Значения из справочника === | |||
<syntaxhighlight lang="django"> | |||
{% set values = get_catalog_values('RECORD_SERVICE_STATUS') %} | |||
{% for value in values %} | |||
{{ value.name }} | |||
{% endfor %} | |||
</syntaxhighlight> | |||
== Шаблоны (jinja2) == | == Шаблоны (jinja2) == | ||
| Строка 21: | Строка 44: | ||
https://pymorphy2.readthedocs.io/en/latest/user/grammemes.html | https://pymorphy2.readthedocs.io/en/latest/user/grammemes.html | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="Jinja"> | ||
{{ "Хомяк ест"|inflect("datv", "plur") }} | {{ "Хомяк ест"|inflect("datv", "plur") }} | ||
{{ "Хомяк"|agree_with_number(4) }} | {{ "Хомяк"|agree_with_number(4) }} | ||
| Строка 27: | Строка 50: | ||
=== Petrovich === | === Petrovich === | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="Jinja"> | ||
{{ "Иванов Иван Иванович"|inflectfio(case, gender) }} | {{ "Иванов Иван Иванович"|inflectfio(case, gender) }} | ||
post= [0...4] | post= [0...4] | ||
| Строка 43: | Строка 66: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Barcode === | === Barcode 128 === | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="Jinja"> | ||
{{ barcode128('PATIENT', patient.id) }} | {{ barcode128('PATIENT', patient.id) }} | ||
{{ barcode128('PATIENT', patient.id, separator='~', width='300px', height='200px') }} | {{ barcode128('PATIENT', patient.id, separator='~', width='300px', height='200px') }} | ||
</syntaxhighlight> | |||
=== Any Barcode === | |||
<syntaxhighlight lang="Jinja"> | |||
{{ barcode('123455551111', barcode_class='ean13') }} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Qrcode === | === Qrcode === | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="Jinja"> | ||
{{ qrcode('PATIENT', patient.id) }} | {{ qrcode('PATIENT', patient.id) }} | ||
{{ qrcode('PATIENT', patient.id, separator='~', size='50px') }} | {{ qrcode('PATIENT', patient.id, separator='~', size='50px') }} | ||
| Строка 57: | Строка 85: | ||
=== Даты === | === Даты === | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="Jinja"> | ||
{{ now() }} | {{ now() }} | ||
{{ now('%d.%m.%Y %H:%M') }} | {{ now('%d.%m.%Y %H:%M') }} | ||
| Строка 63: | Строка 91: | ||
{{ today() }} | {{ today() }} | ||
{{ today('%d.%m.%Y') }} | {{ today('%d.%m.%Y') }} | ||
</syntaxhighlight> | |||
=== Логотип === | |||
<syntaxhighlight lang="Jinja"> | |||
{% set LOGO=lpu.logo.path %} | |||
{% set LOGO_THUMBNAIL=lpu.logo_thumbnail.path %} | |||
<img src="{{ LOGO }}" /> | |||
<img src="{{ LOGO_THUMBNAIL }}" /> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Функции === | === Функции === | ||
<syntaxhighlight lang=" | ==== Подключение шаблона ==== | ||
<syntaxhighlight lang="Jinja"> | |||
{{ render_layout('name') }} | {{ render_layout('name') }} | ||
</syntaxhighlight> | |||
==== Рендер печатного шаблона ==== | |||
<syntaxhighlight lang="Jinja"> | |||
{% set record=get_record(record_id) %} | |||
{{ render_print_template("0080600c-d9f2-4623-bc88-fba59c0aa465", record=record) }} | |||
</syntaxhighlight> | |||
==== Конвертация числа в тексовое представление ==== | |||
<syntaxhighlight lang="Jinja"> | |||
{{ num2words(52, ordinal=True) }} | |||
{{ 52|num2words }} | |||
{{ num2currency(52.2) }} | |||
</syntaxhighlight> | |||
==== Удаление тегов ==== | |||
<syntaxhighlight lang="Jinja"> | |||
{{ data.text|remove_tags }} | |||
</syntaxhighlight> | |||
==== Разное ==== | |||
<syntaxhighlight lang="Jinja"> | |||
{{ "{:02}".format(5) }} 05 | |||
</syntaxhighlight> | |||
==== Отчет с XML ==== | |||
<syntaxhighlight lang="Jinja"> | |||
{% set lines = results.result.lines %}<?xml version="1.0" encoding="windows-1251"?> | |||
{% filter pretty_xml %} | |||
<Файл ВерсФорм="5.01"> | |||
<Документ КНД="1184043" ДатаДок="11.02.2025" КодНО="2511" /> | |||
{% for line in lines %} | |||
<НППлатМедУсл> | |||
<ФИО>{{ line.last_name }}</ФИО> | |||
</НППлатМедУсл> | |||
{% endfor %} | |||
</Файл> | |||
{% endfilter %} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Текущая версия от 01:18, 23 ноября 2025
Некешируемое изображение
<img src="{{ src }}?{{ timestamp() }}" />
Медицинский осмотр
{{ record.case }}
{% set case_services = get_case_services(record.case, include_complex_service=False) %}
{% set case_record_services = get_case_record_services(record.case) %}
{% set record_services = get_record_services(record) %}
{% for service in case_services %}
<p>{{ service.name }}</p>
{% endfor %}
{% for record_service in case_record_services %}
<p>{{ record_service.service.name }}</p>
<p>{{ record_service.cost }}</p>
<p>{{ record_service.status }}</p>
{% endfor %}
{% for record_service in record_services %}
<p>{{ record_service.service.name }}</p>
<p>{{ record_service.cost }}</p>
<p>{{ record_service.status }}</p>
{% endfor %}
Значения из справочника
{% set values = get_catalog_values('RECORD_SERVICE_STATUS') %}
{% for value in values %}
{{ value.name }}
{% endfor %}
Шаблоны (jinja2)
"Документация":http://jinja.pocoo.org/docs/2.10/templates/
Pymorphy2
https://pymorphy2.readthedocs.io/en/latest/user/grammemes.html
{{ "Хомяк ест"|inflect("datv", "plur") }}
{{ "Хомяк"|agree_with_number(4) }}
Petrovich
{{ "Иванов Иван Иванович"|inflectfio(case, gender) }}
post= [0...4]
gender = [0...1]
# Родительный
GENITIVE = 0
# Дательный
DATIVE = 1
# Винительный
ACCUSATIVE = 2
# Творительный
INSTRUMENTAL = 3
# Предложный
PREPOSITIONAL = 4
Barcode 128
{{ barcode128('PATIENT', patient.id) }}
{{ barcode128('PATIENT', patient.id, separator='~', width='300px', height='200px') }}
Any Barcode
{{ barcode('123455551111', barcode_class='ean13') }}
Qrcode
{{ qrcode('PATIENT', patient.id) }}
{{ qrcode('PATIENT', patient.id, separator='~', size='50px') }}
Даты
{{ now() }}
{{ now('%d.%m.%Y %H:%M') }}
{{ today() }}
{{ today('%d.%m.%Y') }}
Логотип
{% set LOGO=lpu.logo.path %}
{% set LOGO_THUMBNAIL=lpu.logo_thumbnail.path %}
<img src="{{ LOGO }}" />
<img src="{{ LOGO_THUMBNAIL }}" />
Функции
Подключение шаблона
{{ render_layout('name') }}
Рендер печатного шаблона
{% set record=get_record(record_id) %}
{{ render_print_template("0080600c-d9f2-4623-bc88-fba59c0aa465", record=record) }}
Конвертация числа в тексовое представление
{{ num2words(52, ordinal=True) }}
{{ 52|num2words }}
{{ num2currency(52.2) }}
Удаление тегов
{{ data.text|remove_tags }}
Разное
{{ "{:02}".format(5) }} 05
Отчет с XML
{% set lines = results.result.lines %}<?xml version="1.0" encoding="windows-1251"?>
{% filter pretty_xml %}
<Файл ВерсФорм="5.01">
<Документ КНД="1184043" ДатаДок="11.02.2025" КодНО="2511" />
{% for line in lines %}
<НППлатМедУсл>
<ФИО>{{ line.last_name }}</ФИО>
</НППлатМедУсл>
{% endfor %}
</Файл>
{% endfilter %}